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.
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.
How can I see the environment variables a process is running with?
You can run the following command:
ps auxwwe |grep processname