In Linux based systems you can set dynamic named values as environment variables. These values are stored within system and that are used by shells. An environment variable is a variable with a name and an associated value. In this article, we will show you how to set and use environment variables.
Environment and Shell Variables
The basic format for the variable are as following:
KEY="Some value"
- Environment variables names should in
UPPER CASE
. Remember that the names of the variables are case-sensitive. - To assign multiple values you should use
:
colon as separator. - There should not have space before or after the
=
equal sign
There are two types of variables, Environment variable and Shell variable:
- Environment variables are variables those are available system-wide and are inherited by all spawned child processes and shells.
- Shell variables are variables that apply only to the current shell instance. Each shell such as
zsh
andbash
, has its own set of internal shell variables.
List Environment and Shell Variables
Following commands are available that allow you to list environment variables
in Linux:
env
– This command allows you to run another program in a custom environment without modifying the current one. It will print a list of the currentenvironment variables
when used without an argument.printenv
– The command prints the specifiedenvironment
orall
variables.set
– It will set or unset shell variables. It will list all the variables includingenvironment
andshell
variables, when used without an argument.unset
– Used to delete shell andenvironment
variables.export
– The command setsenvironment
variables.
The printenv
is mostly used to print the environment variables. If any argument is passed then it will print only value of the variable otherwise it will print a list of all environment variables.
For instance, to print the value of the USER
environment variable, you would type:
printenv USER
It will show output as following:
tecnstuff
You can print multiple variables simultaneously separating by space:
printenv USER HOME
tecnstuff /home/tecnstuff
If you run the printenv
or env
command without any argument then it will show a list of all the variables.
printenv
LESSCLOSE=/usr/bin/lesspipe %s %s
LANG=en_US
XDG_SESSION_ID=154
USER=tecnstuff
PWD=/home/tecnstuff
HOME=/home/tecnstuff
SSH_CLIENT=53.21.53.1 6366 22
XDG_DATA_DIRS=/usr/local/share:/usr/share:/var/lib/snapd/desktop
SSH_TTY=/dev/pts/1
MAIL=/var/mail/tecnstuff
TERM=cygwin
SHELL=/bin/bash
SHLVL=1
LOGNAME=tecnstuff
XDG_RUNTIME_DIR=/run/user/1000
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
LESSOPEN=| /usr/bin/lesspipe %s
_=/usr/bin/printenv
Following are some of the most common environment variables:
USER
– It will show the current logged in user.HOME
– It’s home directory of the current user.EDITOR
– It will show name of default file editor.SHELL
– Display the path of the current user’s shell, such asbash
orzsh
.LOGNAME
– The name of the current user.PATH
– It is a list of directories. When you run a command the system will search those directories in this order and use the first found executable.LANG
– The current locales settings.TERM
– The current terminal emulation.MAIL
– It displays the location of the current user’s mail storage.
To get the list of all variables and shell functions you should use set
command:
set
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:complete_fullquote:expand_aliases:extglob:extquote:force_fignore:histappend:interactive_comments:login_shell:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_COMPLETION_VERSINFO=([0]="2" [1]="8")
BASH_LINENO=()
BASH_SOURCE=()
The above command will show a large list in output so you can pipe the output to the less command:
set | less
Set Shell and Environment Variables
To create a new shell variable with name FIRST_VAR
and set TecNStuff
, you would type:
FIRST_VAR='TecNStuff'
Verify that variable is set using echo $FIRST_VAR
or you can filter output using grep command:
echo $FIRST_VAR
TecNStuff
Now we will use printenv command to check whether the variable is environment or shell variable.
printenv FIRST_VAR
The output is blank, that means it’s not a environment variable.
Conclusion
In this article, we have shown you how to set and list environment
and shell
variables.
If you have any question or feedback, feel free to leave comment below.