Vraag Hoe pas ik mijn PATH aan zodat de wijzigingen beschikbaar zijn in elke Terminal-sessie


Ik wil een map toevoegen om mijn zoekpad te doorzoeken. Ik weet dat ik het moet wijzigen PATH omgevingsvariabele. Ik wil echter dat de wijziging permanent is, zodat deze altijd van kracht is, voor elk Terminal (bash) -venster dat ik open.

Er is een overload van verwarrende en mogelijk tegenstrijdige informatie in https://help.ubuntu.com/community/EnvironmentVariables

Ik gebruik Ubuntu 10.04. Stel dat ik wil toevoegen /usr/local/foo aan mijn PATH. Welk bestand (.bashrc, .profile, .bash_login, enz ...) moet ik wijzigen en hoe moeten de nieuwe regel (en) eruit zien?


48
2017-09-06 16:56


oorsprong




antwoorden:


De volgende opdracht voegt een pad toe aan uw huidige pad:

export PATH=$PATH:/my/custom/path

Als je wilt dat je setup deze opdracht elke keer uitvoert, zijn er een aantal plaatsen waar je het kunt plaatsen. Wanneer u zich aanmeldt, worden de volgende scripts in deze volgorde uitgevoerd:

/etc/profile      (which starts by loading everything in /etc/profile.d)
~/.profile        (which starts by loading ~/.bashrc if you are running bash)

Notes

  • ~/.profile  wordt alleen geladen als ~/.bash_profile en ~/.bash_login BESTAAT NIET. Anders laden ze in ieder geval bash. Het is raadzaam om te gebruiken .profile en niet de bash-specifieke scripts. Dus als je in deze pogingen hebt gecreëerd .bash_login, verwijder het nu alsjeblieft.

  • ~/.bashrc wordt alleen geladen als u een interactieve sessie uitvoert. (iets met een prompt waarin je echt iets kunt typen).

  • ~/.bashrc is opnieuw en opnieuw geladen, elke keer dat je een nieuwe terminal opent. Dus een nieuw tabblad in gnome-terminal, een nieuwe virtuele terminal, enz. Dus zelfs als je niet opnieuw inlogt, .bashrc wordt geladen (en daarmee de omgeving opnieuw ingesteld) telkens wanneer u een nieuwe shell opent.

  • Dingen zoals byobu moeten echt ingaan .profile, (anders werkt het niet ;-)

  • Dingen zoals paden zouden in moeten gaan .profile als je wilt dat ze buiten de interactieve sessies werken. (zeg wanneer u op drukt alt+F2 in GNOME)


59
2017-09-06 18:25



Ik zal dit markeren als het antwoord als u het update om de gevraagde exportregel toe te voegen die moet worden toegevoegd aan .profile. - Joshua Flanagan
Dit was voorheen alleen geldig voor console-aanmeldingen (bijvoorbeeld ssh of de virtuele terminals die toegankelijk zijn voor Ctrl + Alt + Fx). Ik wist niet dat / etc / gdm / Xsession bronnen ~ / .profile tegenwoordig zijn. Netjes! - Marius Gedminas
Ja, ik noemde niet / etc / gdm / Xsession specifiek of ~ / .Xprofile omdat er betere manieren zijn om grafische programma's te laten starten bij het opstarten, wat er wel voor zorgt dat de rest van de omgeving al geladen is. - Ralf
om dit antwoord uitgebreider te maken, voeg MattH's opmerking over sourcing ~ / .profile toe om wijzigingen te activeren zonder een afmelding / in-cyclus. - matt wilkie
@schwiz: ~/.profile wordt niet uitgevoerd op elke terminal, het wordt eerder uitgevoerd, wanneer uw desktopsessie start. Degene die op elke terminal wordt uitgevoerd is ~/.bashrc - MestreLion


Ik heb het aan het werk gezet door het te wijzigen ~/.profile

Het lijkt erop dat het toevoegen van ~ / bin aan mijn pad een slecht voorbeeld was, omdat er al een code in ~ / .profile is om dit automatisch te doen, als de map bestaat.

Om de usr / local / foo-directory aan mijn pad toe te voegen voor elke volgende sessie, voeg ik de volgende regel toe / bewerk ik aan het einde van mijn .profile:

export PATH=$PATH:/usr/local/foo

Om dit effect te krijgen, moest ik echter uitloggen en opnieuw inloggen (gewoon het Terminal-venster sluiten en een nieuwe openen werkte NIET).


13
2017-09-06 17:07



Maak dat export PATH="$PATH:/usr/foo", voor het geval u ooit spaties of andere speciale tekens heeft $PATH. - Gilles
Je kunt de huidige omgeving opnieuw laden zonder uit te loggen door ". ~ / .Profile" te typen. - Matt H
@MattH: nee dat kun je niet. als je bron ~/.profile in een gegeven terminal zal het effectief zijn voor die terminal enkel en alleen - MestreLion
@MestreLion - je hebt gelijk. Ik noemde het gemakshalve voor de huidige terminal. Vergeten om dat toe te voegen. - Matt H
Wat als ik al iets in PATH heb? Kan ik eraan toevoegen zoals PATHS in Windows werken? Ik heb bijvoorbeeld PATH="$HOME/bin:$HOME/.local/bin:$PATH" nu al. - Gabriel Fair


Als u .profile opnieuw wilt laden en wijzigingen wilt aanbrengen zonder uit te loggen / aanmelden, voert u het volgende uit:

source ~/.profile

4
2017-12-08 10:43





U kunt het pad toevoegen aan /etc/environment, maar houd er rekening mee dat geen shell-uitbreidingen werken; de variabele wordt ingesteld op letterlijk de tekens die u invoert.


3
2017-09-08 12:28



Van de twee methoden (opdracht export toevoegen in .profile en volledige padnaam toevoegen aan PATH in etc / environment), wat de voorkeur verdient? - Rohan Bhatia


U kunt het wijzigen .bashrc bestand in uw $HOME directory.

Aan het einde van dit bestand voegt u de regel toe:

export PATH="$HOME/directory_to_include_in_path/:$PATH"

U kunt ook de .profile bestand, ook in uw $HOME directory, inclusief de volgende regel:

PATH="$HOME/directory_to_include_in_path/:$PATH"

Dit werkte voor mij.


0
2018-06-03 14:23



Ik zie niet wat dit toevoegt aan de andere antwoorden die grondiger uitleggen. - Zanna


Going through the basics, I will suggest the following steps:
1. It's recommended to set environment variables in /etc/environment
2. Open the file as superuser in an editor as it's a read only file e.g.     gedit:
gksu gedit /etc/environment
3. System will need password to open it in editable mode. Enter your superuser password and get file opened in a new gedit window. 
4. Add new line at the end of file with 
export PATH=$PATH:/usr/local/foo
5. Save and close the window. It will get command back to terminal.
6. Refresh the environment by running the following command: 
. /etc/environment
7. You may check by executing the following command:
 echo $PATH

-3
2018-01-22 20:00



Dit is onjuist en werkt niet. Parameteruitbreiding wordt niet uitgevoerd in /etc/environment - Zanna