Shell Environment Variables
There are specific environment variables that the bash shell uses by default to define the system environment.
The most important environment variable in this list is the PATH environment variable. When you enter a command in the shell command line interface (CLI), the shell must search the system to find the program. The PATH environment variable defines the directories it searches looking for commands.
The PATH environment variable looks like this.
root@dell:~# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
This shows that there are six directories where the shell looks for commands. Each directory in the PATH is separated by a colon. The PATH also shows the order in which it looks for commands.
The individual directories listed in the PATH are separated by a colon. All you need to do is reference the original PATH value, and add any new directories to the string.
$ PATH=$PATH:/home/buddy/bin
Tags: environment, shell, variables
Setting global environment variables
Global environment variables are visible from any child processes created by the process that sets the global environment variable. The method used to create a global environment variable is to create a local environment variable, then export it to the global environment.
This is done by using the export command:
Example:
export http_proxy=http://192.168.1.1:3128/
You can also remove an existing environment variable. This is done by using the unset command.
Tags: environment, Global, Setting, variables
Setting local environment variables
You can set your own environment variables directly from the bash shell.
Once you start a bash shell (or spawn a shell script), you’re allowed to create local variables that are visible within your shell process. You can assign either a numeric or a string value to an
environment variable by assigning the variable to a value using the equal sign:
root@dell:~# process=testing
root@dell:~# echo $process
testing
Now any time you need to reference the value of the test environment variable, just reference it by the name $process.
Tags: environment, Local, Setting, variables
Local environment variables
There isn’t a command that displays only local environment variables. The set command displays all of the environment variables set for a specific process. However, this also includes the global environment variables.
Here’s the output from a sample set command.
root@dell:~# set
BASH=/bin/bash
BASH_ARGC=()
BASH_ARGV=()
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSION=’3.2.39(1)-release’
COLORTERM=Terminal
COLUMNS=99
DESKTOP_SESSION=IceWM
We’ll notice that all of the global environment variables seen from the printenv command appear in the output from the set command. However, there are quite a few additional environment variables that now appear. These are the local environment variables.
Tags: environment, Local, variables
To view the global environment variables, use the printenv command:
root@dell:~# printenv
SSH_AGENT_PID=3334
SHELL=/bin/bash
TERM=xterm
WINDOWID=14680078
USER=root
http_proxy=192.168.1.1:3128
SSH_AUTH_SOCK=/tmp/ssh-ONJxpP3279/agent.3279
MAIL=/var/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
DESKTOP_SESSION=IceWM
Global environment variables are visible from the shell session, and any child processes that the shell spawns. Local variables are only available in the shell that creates them. This makes global environment variables useful in applications that spawn child processes that require information from the parent process.
The Linux system sets several global environment variables when you start your bash session (for more details about what variables are started at that time, see the ‘‘Locating System Environment Variables’’ section later in this chapter). The system environment variables always use all capital letters to differentiate them from normal user environment variables.
Tags: environment, Global, variables