Running a Command with a Temporarily Different Environment
Quite a few UNIX commands set themselves up by reading the environment. For example, the vi editor reads startup commands from the EXINIT environment variable. Sometimes, you'll want to override the setting of an environment variable for just one command. There's an easier way than setting the variable to a different value and changing it back after you run the command:
- In the Bourne shell, type:
$
VARNAME=value command args
- In the C shell on UNIX systems that have the env command, type:
%
env VARNAME=value command args
- Or, in any C shell, use a subshell () like this:
%
(setenv VARNAME value; command args)
For example, if your EXINIT variable has:
set wrapscan showmatch number
and you want to add nowrapscan to the end of it just this once, you could type (to the Bourne shell):
$ |
$ |
|---|
After that vi command ran, EXINIT wouldn't contain nowrapscan.
For a great example of this technique, see article .
- JP