# loadenv Loads environment files before running a command without polluting your environment ## Source code You can find the source code here: [git.milar.in](https://git.tordarus.net/tordarus/loadenv) ## Installation If you have Go installed, you can simply go install the program: `go install git.tordarus.net/tordarus/loadenv@latest` ## License Distributed under the MIT License. See [LICENSE.md](https://git.tordarus.net/tordarus/loadenv/src/branch/main/LICENSE.md) ## Usage `loadenv` loads the environment file provided via `-f` into the environment and runs the command provided after the arguments. If no file is provided, `.env` is used by default. If no command is provided, `loadenv` prints all environment variables to stdout. --- The variables will only be available to the given command. They will be deleted after the command exits. `loadenv` can be useful when working with programs which heavily use environment variables. ```sh $ cat .env # production server configuration DATABASE_HOST=prod-server.com DATABASE_USER=my-username DATABASE_PASS=my-super-secure-password $ # show the 3 last added env variables $ loadenv | tail -n 3 DATABASE_HOST=prod-server.com DATABASE_USER=my-username DATABASE_PASS=my-super-secure-password $ cat dev.env # development server configuration DATABASE_HOST=dev-server.com DATABASE_USER=my-username DATABASE_PASS=my-super-secure-password $ # load dev.env into environment and run the command env. show last 3 lines $ loadenv -f dev.env env | tail -n 3 DATABASE_HOST=dev-my-username DATABASE_PASS=my-super-secure-password ``` ### Variable expansions By default, environment variables in the env file will NOT be expanded: ```sh $ env | grep USER # current value of $USER USER=my-username $ cat .env # expand $USER variable USERNAME=$USER $ loadenv | tail -n 1 USERNAME=$USER # contains literal "$USER" instead of "my-username" ``` Use `-r` to expand variables in such cases: ```sh $ env | grep USER # current value of $USER USER=my-username $ cat .env # expand $USER variable USERNAME=$USER $ loadenv | tail -n 1 USERNAME=my-username # contains original value of $USER variable ```