hello friends,

I am looking for a way to do what I described in the title. When running command command, I dont want to have to type SOME_ENV_VAR=value command every time, especially if there are multiple.

I am sure youre immediately thinking aliases. My issue with aliases is that if I do this for several programs, my .bashrc will get large and messy quickly. I would prefer a way to separate those by program or application, rather than put them all in one file.

Is there a clean way to do this?

  • Oscar
    link
    fedilink
    English
    31 year ago

    You could write a shell script:

    #!/usr/bin/env sh
    
    export SOME_ENV_VAR=value
    
    command
    

    Then place it on your path, for example /usr/local/bin/command_with_env.

    I avoided overriding the command itself and naming the script the same, because then I think it would try to invoke itself.

    • @deong
      link
      English
      51 year ago

      Just replace command in your script with /usr/bin/command or whatever. It’s generally good practice to full path anything run from a script anyway just to remove any unintended environment dependencies.

      • Oscar
        link
        fedilink
        English
        21 year ago

        Good point. But then if both the script and the command have the same filename, it will be important to make sure the script has a higher precedence in the PATH. Adding it to the end of .bashrc should be enough I think.