Expands environment variables in config files
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


expenv - Expand environment variables Build Status

Expenv replaces ${var} or $var in the input to the values of the current environment variables. Supports stdin/stdout and files.

There is also a newer version available, expenv.sh, written as shell script.


$ go get github.com/blang/expenv
$ $GOPATH/bin/expenv -f inputfile

If you don't want to build it, you might want to download the ELF x86-64 binary of the latest release (build by travis-ci).


$ expenv -f inputfile > outputfile
$ expenv < inputfile > outputfile
$ expenv -i -f inputfile // Replace inplace

Example input:

My PWD is $PWD
Whoami: ${USER}
I'm using $TERM
Expand $empty but don't expand $$empty
Don't expand $(echo empty)

As mentioned in the above example, two special cases exist:

  • $$ is converted to $, allowing you to pass in literal-dollar-signs
  • $( is not converted, allowing your input to contain subshell like behaviour


I need to make config files more dynamic using environment variables. In a docker environment this is a big issue for me.


Feel free to make a pull request. For bigger changes create a issue first to discuss about it.


See LICENSE file.