How do I modify my PATH so that the changes are available in every Terminal session
I want to add a directory to search my search path. I know I have to modify the PATH
environment variable. However, I want the change to be permanent, so that it is always in effect, for every Terminal (bash) window I open.
There is an overload of confusing and possibly conflicting information in https://help.ubuntu.com/community/EnvironmentVariables
I am using Ubuntu 10.04. Suppose I want to add /usr/local/foo
to my PATH
. Which file (.bashrc
, .profile
, .bash_login
, etc...) should I modify and what should the new line(s) look like?
The following command adds a path to your current path:
export PATH=$PATH:/my/custom/path
If you want your setup to execute this command every time, there are a number of places where you can put it. When you login, the following scripts will be executed in this order:
/etc/profile (which starts by loading everything in /etc/profile.d)
~/.profile (which starts by loading ~/.bashrc if you are running bash)
Notes
~/.profile
is only loaded if~/.bash_profile
and~/.bash_login
DO NOT EXIST. Otherwise, at least bash, will load them instead. It is advisable to use.profile
and not the bash specific scripts. So, if in these attempts you created.bash_login
, please delete it now.~/.bashrc
is only loaded if you are running an interactive session. (something with a prompt where you can actually type something).~/.bashrc
is loaded again and again, every time you open up a new terminal. So a new tab in gnome-terminal, a new virtual terminal, etc. So even if you don't login again,.bashrc
is loaded (and thereby resets its environment) every time you open a new shell.Things like byobu should really go into
.profile
, (otherwise it won't work ;-)Things like paths should go into
.profile
if you want them to work outside of the interactive sessions. (say when you press Alt+F2 in GNOME)
I got it to work by modifying ~/.profile
It looks like adding ~/bin to my path was a bad example, as there is already code in ~/.profile to do that automatically, if the directory exists.
To add the usr/local/foo directory to my path for every session going forward, I add/edit the following line at the end of my .profile:
export PATH=$PATH:/usr/local/foo
However, to make this take effect, I needed to log out and log back in (simply closing the Terminal window and opening a new one did NOT work).
To reload .profile and take changes effects without logout/login, run:
source ~/.profile
You can add the path to /etc/environment
, but be aware that no shell expansions will work; the variable will be set to literally the characters you enter.
You can modify the .bashrc
file in your $HOME
directory.
At the very end of this file, add the line:
export PATH="$HOME/directory_to_include_in_path/:$PATH"
You can also modify the .profile
file, also in your $HOME
directory, including the following line:
PATH="$HOME/directory_to_include_in_path/:$PATH"
This worked for me.