What Are Linux Environment Variables?
Linux environment variables are dynamic values that the operating system and various applications use to determine information about the user environment. They are essentially variables that can influence the behavior and configuration of processes and programs on a Linux system. These variables are used to pass configuration information to programs and scripts, allowing for flexible and dynamic system management.
These variables, often referred to as global variables, play a crucial role in tailoring the system’s functionality and managing the startup behavior of various applications across the system. On the other hand, local variables are restricted and accessible from within the shell in which they’re created and initialized.
Linux environment variables have a key-value pair structure, separated by an equal (=) sign. Note that the names of the variables are case-sensitive and should be in uppercase for instant identification.
Key Features of Environment Variables
- Dynamic Values: They can change from session to session and even during the execution of programs.
- System-Wide or User-Specific: Some variables are set globally and affect all users and processes, while others are specific to individual users.
- Inheritance: Environment variables can be inherited by child processes from the parent process, making them useful for configuring complex applications.
Common Environment Variables
Here are some commonly used environment variables in Linux:
- HOME: Indicates the current user’s home directory.
- PATH: Specifies the directories where the system looks for executable files.
- USER: Contains the name of the current user.
- SHELL: Defines the path to the current user’s shell.
- LANG: Sets the system language and locale settings.
Setting and Using Environment Variables
Temporary Environment Variables
You can set environment variables temporarily in a terminal session using the export command: This command sets an environment variable named MY_VAR to true for the current session. Environment variables are used to store information about the environment in which programs run.
export MY_VAR=true
echo $MY_VAR
Example 1: Setting Single Environment Variable
For example, the following command will set the Java home environment directory.
1 2 3 |
export JAVA_HOME=/usr/bin/java |
Note that you won’t get any response about the success or failure of the command. As a result, if you want to verify that the variable has been properly set, use the echo command.
1 2 3 |
echo $JAVA_HOME |
Example 2: Setting Multiple Environment Variables
You can specify multiple values for a multiple variable by separating them with space like this:
<NAME>=<VALUE1> <VALUE2><VALUE3>
1 2 3 |
export VAR1="value1" VAR2="value2" VAR3="value3" |
Example 3: Setting Multiple value for single Environment Variable
You can specify multiple values for a single variable by separating them with colons like this: <NAME>=<VALUE1>:<VALUE2>:<VALUE3>
1 2 3 |
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin" |
The PATH variable contains a list of directories where the system looks for executable files. Multiple directories are separated by colons.
Permanent Environment Variables
To make DOTNET_HOME available system-wide, follow these steps:
This command appends the line MY_VAR=”True” to the /etc/environment file, which is a system-wide configuration file for environment variables. By adding this line, you make the MY_VAR variable available to all users and sessions on the system. The use of sudo ensures that the command has the necessary permissions to modify /etc/environment
Example 1: Setting Single Environment Variable for all USERS
1 2 3 4 |
export DOTNET_HOME=true echo 'DOTNET_HOME="true"' | sudo tee /etc/environment -a |
Example 2: Setting Multiple value for single Environment Variable for all USERS
You can specify multiple values for a single variable by separating them with colons like this: <NAME>=<VALUE1>:<VALUE2>:<VALUE3>
1 2 3 |
export PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin" |
1 2 3 |
echo PATH="/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin" | sudo tee /etc/environment -a |
Breakdown of the Command
echo ‘DOTNET_HOME=”true”‘: This command outputs the string DOTNET_HOME=”/dotnet-helpers/execute”. Essentially, echo is used to display a line of text.
| (Pipe): The pipe symbol | takes the output from the echo command and passes it as input to the next command. In this case, it passes the string DOTNET_HOME=”/dotnet-helpers/execute” to sudo tee.
sudo tee /etc/environment -a: sudo: This command is used to run commands with superuser (root) privileges. Since modifying /etc/environment requires administrative rights, sudo is necessary.
tee: The tee command reads from the standard input (which is the output of the echo command in this case) and writes it to both the standard output (displaying it on the terminal) and a file.
/etc/environment: This is the file where tee will write the output. The /etc/environment file is a system-wide configuration file for environment variables.
-a: The -a (append) option tells tee to append the input to the file rather than overwriting its contents. This ensures that any existing settings in /etc/environment are preserved and the new line is simply added to the end of the file.
This command is used to add a new environment variable (DOTNET_HOME) to the system-wide environment variables file (/etc/environment). By appending it, you ensure that the new variable is available to all users and sessions across the entire system.