Environment variable

From Linuxintro

An environment variable holds information in your shell session. For example, take the often-used variable PATH that tells the shell where to look for executables:

$ echo $PATH

You can list the current environment variables by opening a console and entering the command:


Set an environment variable

You can set a variable like this:

$ export MYVARIABLE=1000
$ echo "I just defined $MYVARIABLE"
I just defined 1000

Environment variables are not global, they are maintained separately per process. A process may change its own, but cannot affect the environment variables of other processes. When a process forks its children inherit the parent's environment variables. That means that you cannot change a variable by calling a program:

$ cat >myscript.sh
export myvar="this is set"
echo $myvar
$ sh myscript.sh
this is set
$ echo $myvar


In order to set variables from a script, you have to source the script:

$ source myscript.sh
this is set
$ echo $myvar
this is set

Note that sourcing can also be done with a dot:

$ export myvar=empty
$ . myscript.sh
this is set
$ echo $myvar
this is set

User-specific variables are set in the $HOME/.bash_profile or $HOME/.bashrc files as these are the files that are sourced when you log in. These variables are available throughout the shell session unless you re-define them.

Process environments

You can see the environment variables of every process with the command:

cat /proc/12345/environ

Where 12345 is the process' PID.

See also