Environment variables are a type of variables that are defined in the shell and are required during program execution. They are often used in shell programs to perform various operations.
The scope of any variable refers to the area in which it can be accessed or defined. In Linux, the scope of an environment variable can either be global /system-wide or local. Some common examples of environment variables in Linux include:
- PWD – displays the path of the present working directory
- HOME – gives the path of the home directory
- HOSTNAME – prints name of the host
- EDITOR – shows the default file editor
In this guide, we will learn how to set and unset environment variables in Linux.
Set environment variables using the export command
A simple way to set environment variables is using the export command. We have to give the variable a name that will be used to access it in the shell and a value to hold data
$ export NAME = VALUE
For example, set you variable name
$ export VAR ="value"
When using the export command, the environment variable will be set only for the present shell session. As a result, the environment variable will no longer be accessible if you open a new terminal or restart your system.
To output the value of your environment variable on the shell, you can use either of the commands shown;
$ printenv variable
$ echo $variable
Note: When using the echo command, the variable name should be preceded by a dollar sign.
Set user-wide environment variables on Linux
These are the variables that have been defined for a specific user and are executed whenever that user logs in via a local or remote login session. They are set in and loaded from the following configuration files in the user’s home directory: bashrc, .bash profile, .bash login, and .profile.
Using the .bashrc file
The .bashrc file is a script that is loaded whenever a user opens a new terminal session. Environment variables in this file are executed whenever a new session is started.
For example, add a variable NEW_VAR to your .bashrc file as shown:
$ sudo vi .bashrc
$ export NEW_VAR =”Linux”
Save your file and reload the .bashrc file with the following source command for changes to be applied:
$ source ~/.bashrc
Print out the new variable:
$ echo $NEW_VAR
The variable is now persistent when you open new sessions or restart your system
To add environment variables that will be available for remote login sessions., modify the .bash_profile file.
$ sudo vi .bash_profile
$ export $VAR1 ="Linux"
Next, reload the .bashrc file with the following source command for changes to take effect.
$ source ~/.bash_profile
Print out the new variable:
$ echo $VAR1
Set system-wide environment variables in Linux
These are system-wide environment variables, meaning they are available to all users on the system. These variables can be found in the following directories and files that include system-wide configuration files: /etc/environment, /etc/profile, /etc/profile.d/, /etc/bash.bashrc, /etc/profile.d/, /etc/profile.d/, /etc/profile.d/, /etc/profile.d/, /etc/profile
Using /etc/bash.bashrc file
Add a system-wide environment variable to the /etc/bash.bashrc file. It will be available to the users when any of them starts a new terminal but cannot be accessed remotely.
$ export VAR1='Linux'
Now, reload the /etc/bash.bashrc file for changes to take effect.
$ source /etc/bash.bashrc
From the output above, the variable can be accessed by both the normal user and root.
Using /etc/profile file
To add an environment variable that will be available when any of the users on your system is accessing it remotely, modify the ‘/etc/profile’ file. After adding the variable, reload the file.
$ sudo vi /etc/profile
$ export VAR='Linux'
$ source /etc/profile
$ echo $VAR
From the example above, the variable is available for a new user who has logged in remotely
Using /etc/environment file
To add an environment variable that will be available to all users on both local and remote login sessions, add the variable in the /etc/environment file.
$ sudo vi /etc/environment
$ export MY_VAR='Linux'
$ source /etc/environment
$ echo $MY_VAR
Unset Environment Variables on Linux
Now that you have learnt how to set environment variables on your system, you may need to remove them if you don’t need them anymore.
To unset environment variables in Linux use the unset command or remove variable entries from your system configuration files.
Use the following syntax to unset an environment variable in Linux:
$ unset <variable>
For example, unset any of the above variables:
$ unset NEW_VAR
To verify this, print out the variable:
Nothing is displayed in the terminal.
Note: Environment variables defined in the system-wide or user-wide configuration files can be erased solely by removing them from these files. After that, reload the file with the source command for changes to take effect.
$ source <file-name>
You have seen how to set and unset both local and persistent environment variables in Linux.
Karim Buzdar holds a degree in telecommunication engineering and holds several sysadmin certifications including CCNA RS, SCP, and ACE. As an IT engineer and technical author, he writes for various websites.