Linux – the best way to set an environment variable in .bashrc

bashenvironment-variableslinuxshell

When setting up a variable in .bashrc, should I use this?

export VAR=value

Or would this be enough?

VAR=value

What is exactly the difference (if there is one)?

Best Answer

The best way

export VAR=value

The difference

Doing

VAR=value

only sets the variable for the duration of the script (.bashrc in this case). Child processes (if any) of the script won't have VAR defined, and once the script exits VAR is gone.

export VAR=value

explicitly adds VAR to the list of variables that are passed to child processes. Want to try it? Open a shell, do

PS1="foo > "
bash --norc

The new shell gets the default prompt. If instead you do something like

export PS1="foo > "
bash --norc

the new shell gets the prompt you just set.

Update: as Ian Kelling notes below variables set in .bashrc persist in the shell that sourced .bashrc. More generally whenever the shell sources a script (using the source scriptname command) variables set in the script persist for the life of the shell.