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@programming.dev
    link
    fedilink
    English
    arrow-up
    3
    ·
    1 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@lemmy.world
      link
      fedilink
      English
      arrow-up
      4
      ·
      1 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@programming.dev
        link
        fedilink
        English
        arrow-up
        1
        ·
        1 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.