How do I modify my PATH so that the changes are available in every Terminal session
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