How to add directory to system path in Linux

Updated: 01/24/2018 by Computer Hope
add directory to linux

In Linux, the PATH environment variable stores the names of paths that will be searched for the executable files of any commands typed in the command line. The value of the PATH environment variable is a string containing several pathnames, each delimited by a colon. For instance, the default PATH on a typical system might look like this:

/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

When you type a command such as cat and press Enter, the shell searches each of these directories for an executable file named cat. The first one it finds is the one it runs.

To view the current value of your PATH environment variable, you can use the echo command. As with all variables in the shell, when referring to the value you must put a dollar sign before the variable name:

echo $PATH

In the above example, the current value of path return you to the command prompt.

Setting PATH for your current shell session

You can set the value of PATH as you would any other shell variable, with the form NAME=VALUE, like this:

PATH=/my/first/path:my/second/path

The problem with this command is that it will completely overwrite the values you had before, which you probably don't want. To add a new value in addition to the old ones. You can accomplish this by referring to PATH in the new definition, like this:

PATH=$PATH:/my/new/path

Using the command above adds your new path to the current value of PATH. Since the pathnames are searched in order, you probably want to add your new path at the end of the variable as we've done here. Instead, if you typed:

PATH=/my/new/path:$PATH

Your new path would be searched before, not after, the default system paths.

Using export to pass the PATH environment variable to child processes

This type of PATH definition sets the environment variable for your current shell session, but any new programs you run might not see the new path you've added. That's because your shell lets you control the environment by requiring you to manually declare what environment variables are passed on to other programs and processes. You can accomplished this with the export command. If you run:

export PATH

Any processes you run until you log out use the current value of PATH.

If you prefer, you can combine these two commands into a single line, for convenience. Put a semicolon between them so that the shell knows they're separate commands:

PATH=$PATH:/my/new/path:/my/other/new/path;export PATH
Tip

If any of your pathnames have spaces in them, enclose the variable definition in quotation marks, to be safe.

PATH="$PATH:/putting/spaces in pathnames:/makes/life very/inconvenient";export PATH

Setting the PATH variable for every new shell session

The methods we've used so far only sets the environment variable for your current shell session; when you logout or close the terminal window, your changes will be forgotten. To set PATH to a certain value every time you log in or start a new shell session, add it to your bash startup script. Every time you start an interactive shell session, bash reads the following files in order (if they exist), and executes the commands inside of them:

/etc/profile
~/.bash_profile
~/.bash_login
~/.profile

The first file, /etc/profile, is the default startup script for every user on the system. One or more of the remaining three files are located in the home directory of every user. Any of those three can be used, but it's important to know that they will be searched for in this order.

You can edit these files and manually change any lines containing PATH= definitions. Be careful if you do so, because these are the directories used to locate important operating system files.

To add a path for your current user only, you can leave the other PATH= lines untouched. Add a line like this to the end of the file:

PATH="$PATH:/new/path";export PATH

If you add this to the end of the .bash_profile file in your home directory, it takes effect every time your user starts a new shell session. If you add this to /etc/profile, it takes effect for every user on the system. Note that you need administrator privileges to edit /etc/profile, so you can use sudo (or be logged in as root) to do so.