An intro to managing user environment variables
Environment variables control how your working environment in Linux looks, acts, and feels. There are two types of variables:
- Environment variables: These are process-wide variables built into the system and control the way it looks and acts, since they are process-wide, they are inherited by any child shells or processes.
- Shell variables: Are typically listed in lowercase and are only valid in the shell they are set in.
Viewing and Modifying Environment Variables
env command to view all you default environment variables:
Environment variables are always uppercase, as we can see
To view all environment variables, including shell variables, local variables, and shell functions such as any user-defined variables and command aliases, we can use the
set command. I'll use it with
more so it's a bit more manageable to view:
set | more
Changing Variable Values
We can change a variable by providing the name, followed by an equals sign and the new value
We've changed the value of
HISTSIZE but only in our particular environment, if we wanted to make this change permanent we would use the
export will set the new value from your current environment to any new forked child processes, allowing new processes to inherit the exported variables.
NOTE: Before making any changes, you might want to save a copy of the current value
echo $VARIABLE> ~/valueOfVARIABLE.txt or you might even want to keep a copy of all current variables values
Another variable you might want to modify is the
PS1 variable. It has a set of placeholders for information you want to display in your shell prompt:
- \u The name of the current user
- \h The hostname
- \w The base name of the current working directory
The PATH variable
PATH variable controls where on your system your shell will look for commands. If the bash shell doesn't find the command in one of the directories in your
PATH variables, it will return the error
command not found
Let's see which directories are stored in your
There are the directories where my terminal will search for any command. Each directory is separated by a colon (:)
Let's say I have some commands in the
/home/azureuser/gpstools directory that I would add to my
PATH We can add a directory to the
PATH variable by entering
This will assign the original
PATH plus the
DO NOT DO
PATH=/directory/to/add that will replace everything and add the new directory, you want to append, not replace.
Creating a User-Defined Variable
We can create our own variables by following this syntax
If you need it to persist, don't forget to export it.
export MYVARIABLE and if you want to delete any variable, use the
unset command, just double check before deleting anything.