158
votes

On Linux (Ubuntu 11.04) in bash, is it possible to temporarily set an environment variable that will only be different from the normal variable for the duration of the script? For example, in a shell script, making an app that saves to HOME portable by temporarily setting HOME to a folder in the present working directory, and then launching the app.

3
It would be harder if you wanted the setting to last beyond the duration of the script - Nemo

3 Answers

146
votes
VAR1=value1 VAR2=value2 myScript args ...
77
votes
env VAR=value myScript args ...
38
votes

Just put

export HOME=/blah/whatever

at the point in the script where you want the change to happen. Since each process has its own set of environment variables, this definition will automatically cease to have any significance when the script terminates (and with it the instance of bash that has a changed environment).