Hoe voeg ik een directory toe aan de $PATH
in Ubuntu en maak ik de wijzigingen permanent?
Een pad ingesteld in .bash_profile
zal alleen worden ingesteld in een bash login-shell (bash -l
).
Als je je pad in .profile
zet, zal het beschikbaar zijn voor je complete desktop sessie. Dat betekent dat zelfs metacity het zal gebruiken.
Bijvoorbeeld ~/.profile
:
if [ -d "$HOME/bin" ] ; then
PATH="$PATH:$HOME/bin"
fi
Trouwens, je kunt de PATH variabele van een proces controleren door naar zijn omgeving te kijken in /proc/[pid]/environ
(vervang [pid] door het nummer van ps axf
). Bv. gebruik grep -z "^PATH" /proc/[pid]/environ
bash
als login shell parseert .profile
niet als .bash_profile
of .bash_login
bestaat. Van man bash
:
zoekt het naar ~/.bash_profile, ~/.bash_login, en ~/.profile, in die volgorde, en leest en voert commando's uit van de eerste die bestaat en leesbaar is.
Zie de antwoorden hieronder voor informatie over .pam_environment
, of .bashrc
voor interactieve niet-login shells, of stel de waarde globaal in voor alle gebruikers door een script in /etc/profile.d/
te zetten of gebruik /etc/X11/Xsession.d/
om de weergave managers sessie te beïnvloeden.
Bewerk .bashrc
in je home directory en voeg de volgende regel toe:
export PATH="/path/to/dir:$PATH"
U moet uw .bashrc
sourceen of uitloggen/aanloggen (of de terminal herstarten) om de veranderingen effect te laten hebben. Om uw .bashrc
te sourceen, type gewoon
$ source ~/.bashrc
Het toevoegen aan .bashrc zal werken, maar ik denk dat de meer traditionele manier om je padvariabelen in te stellen is in .bash_profile door de volgende regels toe te voegen.
PATH=$PATH:/my/path/foo
export PATH
Volgens deze thread lijkt het erop dat Ubuntu's gedrag iets anders is dan RedHat en klonen.