Vraag Hoe voeg je een map toe aan het PATH?


Hoe voeg ik een map toe aan de $PATH in Ubuntu en de wijzigingen permanent maken?


626
2017-07-22 20:42


oorsprong


help.ubuntu.com/community/EnvironmentVariables Er is alles wat je moet weten. Ik kwam erachter dat veel van de invoer hier onjuist was of dat de methode tenminste niet werd gesuggereerd. Dit is een geweldig stukje informatie waarmee je kunt uitzoeken waar je je omgevingsvariabele kunt aanpassen op basis van de reden waarom je het doet en hoe je het precies moet doen zonder alles te verknoeien (zoals ik deed met een paar van de bovengenoemde slechte adviezen). Tot ziens, en bedankt voor alle vissen! - Bus42


antwoorden:


Gebruik ~ / .profile om $ PATH in te stellen

Een pad ingesteld in .bash_profile wordt alleen ingesteld in een bash login shell (bash -l). Als je je pad inslaat .profile het zal beschikbaar zijn voor uw volledige bureaubladsessie. Dat betekent dat zelfs metacity het zal gebruiken.

Bijvoorbeeld ~/.profile:

if [ -d "$HOME/bin" ] ; then
  PATH="$PATH:$HOME/bin"
fi

Trouwens, je kunt de variabele PATH van een proces bekijken door in zijn omgeving te kijken /proc/[pid]/environ (vervang [pid] door het nummer van ps axf). Bijv. gebruik grep -z "^PATH" /proc/[pid]/environ

Notitie:

bash als een inlogshell niet parseert .profile als een van beide .bash_profile of .bash_login bestaat. Van man bash :

het zoekt naar ~ / .bash_profile, ~ / .bash_login, en ~ / .profile, in dat   bestelt en leest en voert commando's uit van de eerste die bestaat   en is leesbaar.

Zie de antwoorden hieronder voor informatie over .pam_environmentof .bashrc voor interactieve shells zonder login, of stel de waarde globaal in voor alle gebruikers door er een script in te plaatsen /etc/profile.d/ of gebruik /etc/X11/Xsession.d/ om de displaybeheerdersessie te beïnvloeden.


396
2017-07-22 22:04



Cool, dat werkte. Ik zag waar het automatisch de prullenmand zal toevoegen als ik het maak, dus ik gebruikte dat alleen in plaats van scripts. TY. - justingrif
Op Xbunutu .profile wordt niet uitgevoerd dus ik stop het in .bashrc en het werkt. - tekumara
Dit stuk documentatie is zeer goed gedaan: Officiële documentatie over omgevingsvariabele. Overweeg het te lezen (om niet te zeggen dat dit is bijgewerkt naar de laatste versie van de regels om waarden toe te voegen aan de omgevingsvariabele). - Michele
Waar in .profile voegen we het pad ?? - Vineet Kaushik
Ik heb nog steeds geen idee waar ik mijn extra paddeel aan moet toevoegen. Ik moet de Android SDK toevoegen aan mijn pad ... PATH="$HOME/bin:$PATH" Dus ik voeg het toe? - Jamie Hutber


Bewerk .bashrc in je homedirectory en voeg de volgende regel toe:

export PATH="/path/to/dir:$PATH"

Je zult je bron moeten vinden .bashrc of log uit / login (of start de terminal opnieuw) om de wijzigingen door te voeren. Om jouw bron te zijn .bashrc, typ gewoon

$ source ~/.bashrc

255
2017-07-22 20:45



Hoe "bron je jouw" .bashrc"? Hoe" herstart u de terminal "? - isomorphismes
In bash is het gewoon '. .bashrc' - Ophidian
Ik nam de aanname dat je in je homedirectory zat. want dat is waar de .bashrc die je wilt bewerken is. - Ophidian
.bashrc is niet de juiste plaats voor het instellen van omgevingsvariabelen. Ze zouden erin moeten gaan .profile of .pam_environment. Zien mywiki.wooledge.org/DotFiles - geirha
@LaoTzu . .bashrc niet .bashrc :) of source .bashrc wat dat betreft - Znarkus


De aanbevolen plaats om permanent te definiëren, systeembrede omgevingsvariabelen die voor alle gebruikers gelden, bevinden zich in:

/etc/environment

(dat is waar de standaard PATH is gedefinieerd)

Dit werkt op desktop of console, gnome-terminal of TTY, regen of zonneschijn;)

  • Druk op om te bewerken alt+F2 en typ:

    gksudo gedit /etc/environment
    

    (of open het bestand met sudo in je favoriete teksteditor)

Om veranderingen te bewerkstelligen, uitvoeren . /etc/environment. Omdat dit bestand slechts een eenvoudig script is, wordt het uitgevoerd en wordt het nieuwe pad toegewezen aan de PATH omgevingsvariabele. Om run env te controleren en de PATH waarde in de aanbieding.

Verwant:


101
2017-07-31 03:49



en dan moet je opnieuw opstarten om wijzigingen door te voeren ... - Lee
Dit is precies wat ik nodig had. Het aanbieden van een weggooi vm-afbeelding via vagrant en nodig om node en npm aan het pad toe te voegen. - Austin Pray
Om veranderingen in effect run aan te nemen. / etc / environmentement (ja, punt, een spatie en / etc / environment). Omdat dit bestand slechts een eenvoudig script is, wordt het uitgevoerd en wordt het nieuwe pad toegewezen aan de PATH-omgevingsvariabele. Om run-env te controleren en de PATH-waarde in de lijst te bekijken. - WindRider
Ik moest rennen source /etc/environment om de wijzigingen opnieuw te laden - JohnnyAW


Ik denk dat de canonieke manier in Ubuntu is:

  • maak een nieuw bestand aan onder /etc/profile.d/

    sudo vi /etc/profile.d/SCRIPT_NAME.sh
    
  • voeg daar toe:

    export PATH="YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH"
    
  • en geef het toestemming om uit te voeren

    sudo chmod a+x /etc/profile.d/SCRIPT_NAME.sh
    

54
2018-01-09 01:31



Het is meestal veiliger om uw aangepaste pad toe te voegen aan het einde van PATH in plaats van het begin. Hiermee wordt voorkomen dat per ongeluk systeemopdrachten worden vervangen door uw programma's (of de schadelijke programma's van iemand anders). Dit voorkomt ook veel verwarring wanneer iemand anders op uw systeem werkt (of u advies geeft) en zij onverwachte resultaten krijgen van opdrachten die u hebt "vervangen". - Joe


Voor complete nieuwkomers (zoals ik) die meer op hun gemak zijn met GUI:

  1. Open je $HOME map.
  2. Ga naar Uitzicht → Toon verborgen bestanden of druk op Ctrl + H.
  3. Klik met de rechtermuisknop .profile en klik op Openen met teksteditor.
  4. Scroll naar beneden en voeg toe PATH="$PATH:/my/path/foo".
  5. Opslaan.
  6. Log uit en log weer in om wijzigingen toe te passen (laat Ubuntu daadwerkelijk laden .profile).

44
2017-10-24 22:05



Het bewerken van het .profile-bestand wordt niet meer aanbevolen. U kunt deze methode nog steeds gebruiken om het bestand te bewerken .pam_environment zie: help.ubuntu.com/community/EnvironmentVariables - PulsarBlow
Bedankt @ PulsarBlow! Ik weet niet precies wat precies het verschil en het voordeel is ... Dit is de directe URL naar de relevante sectie: help.ubuntu.com/community/... - dain
Dit antwoord zorgde ervoor dat mijn systeem stopte met inloggen omdat alle paden werden overschreven. Ubuntu 16.04 gebruiken. - Frisbetarian
@Frisbetarian je moet ervoor zorgen dat je de $PATH: bit die de bestaande PATH-definitie bevat - dain
@dain: je reactie heeft mijn leven gered! - Py-ser


Voor persistente omgevingsvariabelen die alleen beschikbaar zijn voor bepaalde gebruikers. Ik raad Ubuntu officiële documentatie ten zeerste aan.

https://help.ubuntu.com/community/EnvironmentVariables

Verwijzend naar de bovenstaande documentatie, heb ik mijn Android SDK-padgereedschappen door:

  1. het creëren van ~/.pam_environment bestand in de thuismap.
  2. de inhoud ervan is PATH DEFAULT=${PATH}:~/android-sdk-linux/tools.
  3. extra aangepast gebruikerspad kan worden toegevoegd door paden te scheiden met dikke darm (:).
  4. dit vereist re-login, wat betekent dat u uit moet loggen en weer moet inloggen op de desktopomgeving.

40
2017-12-08 23:07



Dit is het beste antwoord. - Paulo Coghi


Zet die regel in uw ~/.bashrc het dossier.

Het wordt gekocht wanneer u een terminal opent

BEWERK: Gebaseerd op de onderstaande opmerkingen voor een algemenere instelling die van toepassing is op alle shells (inclusief wanneer u raakt alt-F2 in Unity), voeg de regel toe aan uw ~/.profile het dossier. Waarschijnlijk niet beide echter, omdat het pad tweemaal aan je wordt toegevoegd PATH omgeving als u een terminal opent.


25
2017-07-31 01:08



Eigenlijk dacht ik dat je het pad in een van beide instelde $HOME/.profile voor persoonlijke instellingen, of /etc/profile voor alle gebruikers. Maar als het alleen nodig is voor bash, veronderstel ik dat beide zullen werken. - Marty Fried
Als je het instelt ~/.bashrc, het is alleen beschikbaar in de terminals die u opent. Bijv. als je Alt + F2 aanraakt en probeert een commando van die map uit te voeren, zal het het niet vinden. Als je het instelt ~/.profile of ~/.pam_environment, de kabouter-sessie (of welke DE die je ook gebruikt) zal het erven. PATH toevoegen ~/.bashrc heeft ook het nadeel dat als je interactief opent / exec uitvoert vanuit een andere interactieve bash-shell, deze meerdere keren wordt toegevoegd. - geirha
Ik heb hier een tijdje niet echt naar gekeken, dus ik heb een zoekopdracht gedaan en het lijkt erop dat er minstens 95 verschillende manieren zijn om het pad in te stellen, waarvan de meeste worden besproken hier. Ik heb nooit uitgezocht welke het beste is. I denk ~/.profile is wel correct voor persoonlijke paden; dat is waar Ubuntu de ~/bin directory. En ik moet bekennen dat ik een klein beetje overdreef op het aantal manieren - een beetje. - Marty Fried
@MartyFried, ja, om de bot in #bash op freenode aan te halen: «De overgrote meerderheid van bash-scripts, code, tutorials en gidsen op internet zijn onzin. Sturgeon was een optimist. »Met google voor bash-problemen, zult u vaak veel halfwerkende oplossingen vinden voordat u een goede vindt. Oh en ik zou gaan ~/.profile in dit geval ook. - geirha
@geirha - Ik ben het ermee eens dat de meeste gidsen op het internet in het algemeen waarschijnlijk onzin zijn, met name alles wat Linux gebruikt, omdat verschillende distributies, of zelfs verschillende versies van dezelfde, dingen anders doen. Het komt meestal neer op wat werkt, maar de meeste mensen realiseren zich niet dat wat werkt gewoon is wat werkt, niet noodzakelijk wat goed is of zelfs wat altijd zal werken. Ik probeer erachter te komen welke van de vele manieren juist is, omdat ik het een hekel heb om dingen meer dan eens te doen, maar dat is niet altijd gemakkelijk. :) - Marty Fried


Om het systeem breed in te stellen, voegt u de lijn toe export PATH=/path/you're/adding:$PATH tot het einde van /etc/profile.

Als u de directory voor alleen de aangemelde gebruiker wilt toevoegen, voegt u dezelfde regel toe aan ~/.bash_profile.


15
2017-07-22 23:20





Toevoegen aan .bashrc zal werken, maar ik denk dat de meer traditionele manier om je padvariabelen in te stellen zich in .bash_profile bevindt door de volgende regels toe te voegen.

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

Volgens deze draad het lijkt erop dat Ubuntu's gedrag iets anders is dan RedHat en klonen.


14
2017-07-22 20:58



Ik heb geen .bash_profile, moet ik het maken? - justingrif
Als je hebt .bashrc, steek het erin .bashrc in plaats daarvan. GUI-terminals in Ubuntu zijn geen login-shells, dus .bash_profile zal niet worden uitgevoerd.
Ik heb geen gui-shell. Maar uit de bovenstaande thread lijkt het erop dat de .bashrc prima werkt. - justingrif
Beide zullen werken als uw shell een login-shell is. Maar ik heb zojuist de .bash_profile-aanpak geprobeerd op een van mijn Ubuntu-machines en zelfs nadat ik mijn gnome-sessie opnieuw had gestart, werd mijn .bash_profile niet gebruikt. Dus ik zou zeggen dat het plaatsen van .bashrc waarschijnlijk de manier is om met Ubuntu te werken. - 3dinfluence
@justingrif Nee, dat heb je niet nodig .bash_profile. Als bash geen a vindt .bash_profile (wanneer u zich interactief aanmeldt), zal het zoeken .profile en gebruik dat in plaats daarvan. Standaard heb je een .profile en .bashrc in Ubuntu. En .profile is de juiste plaats om omgevingsvariabelen in te stellen als we pam_env negeren. - geirha