Run a command under a different environment

  • June 7, 2008
  • Avatar for jacob
    Jacob
    Peddicord

Today we have a simple tip of the shell. Are there applications or scripts that you use that require different environment variables, such as a different PATH or EDITOR? Then meet the env command. env allows you to run a program in a restricted environment with custom variables or so that no "dirty" variables are left around.

Rather than explain how to use it, let's just jump in to some examples:

Let's say you have some custom Python modules that you installed to your home folder. To start up Python with these custom modules, you would use something like this:
$ env PYTHONPATH="/home/user/python" python
>>> import sys; sys.path
['', '/home/user/python', '/usr/lib/python2.5', ... ]

Maybe you want to edit your crontab with vim today:
env EDITOR=vim crontab -e

Perhaps you want to start a shell without any environment variables present at all:
env - sh

Another use of the env command is finding out what variables are currently set on your system.
$ env
PWD=/home/jacob
HISTCONTROL=ignoreboth
LESSOPEN=| /usr/bin/lesspipe %s
LESSCLOSE=/usr/bin/lesspipe %s %s

Many shells also support omitting env completely if you just want to set variables and don't care about clearing the environment.
$ PYTHONPATH="/home/user/python" python

There you have it. The next time you see "this program depends on the following environment variables" on a man page, you'll know what to do.

Avatar for jacob Jacob Peddicord

Home » Articles »