Frage Wie fügt man dem PATH ein Verzeichnis hinzu?


Wie füge ich ein Verzeichnis zu dem hinzu? $PATH in Ubuntu und machen Sie die Änderungen dauerhaft?


626
2017-07-22 20:42


Ursprung


help.ubuntu.com/community/UmweltVariablen Es gibt alles, was Sie wissen müssen. Ich fand heraus, dass viele Eingaben hier falsch waren oder zumindest die Methode nicht vorgeschlagen wurde. Dies ist eine großartige Information, mit der Sie herausfinden können, wo Sie Ihre Umgebungsvariable basierend auf dem Grund, aus dem Sie das tun, und genau, wie Sie es tun, ohne alles zu vermasseln (wie ich nach einigen der oben genannten schlechten Ratschläge). So lange, und danke für all die Fische! - Bus42


Antworten:


Verwenden von ~ / .profile zum Festlegen von $ PATH

Ein Pfad wurde festgelegt .bash_profile wird nur in einer Bash-Login-Shell gesetzt (bash -l). Wenn du deinen Weg eingibst .profile Es wird für Ihre gesamte Desktopsitzung verfügbar sein. Das bedeutet, dass selbst die Metacity es benutzen wird.

Beispielsweise ~/.profile:

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

Übrigens, Sie können die PATH-Variable eines Prozesses überprüfen, indem Sie in der Umgebung nachsehen /proc/[pid]/environ (Ersetzen Sie [pid] durch die Zahl von ps axf). Z.B. benutzen grep -z "^PATH" /proc/[pid]/environ

Hinweis:

bash wie eine Login-Shell nicht analysiert .profile wenn entweder .bash_profile oder .bash_login existiert. Von man bash :

Es sucht nach ~ / .bash_profile, ~ / .bash_login und ~ / .profile   Reihenfolge, und liest und führt Befehle von der ersten aus, die existiert   und ist lesbar.

Siehe die Antworten unten für Informationen über .pam_environment, oder .bashrc für interaktive Nicht-Login-Shells oder setzen Sie den Wert global für alle Benutzer, indem Sie ein Skript einfügen /etc/profile.d/ oder benutzen /etc/X11/Xsession.d/ um die Display-Manager-Sitzung zu beeinflussen.


396
2017-07-22 22:04



Cool, das hat funktioniert. Ich sah, wo es automatisch das bin-Verzeichnis hinzufügen wird, wenn ich es mache, also habe ich das nur anstelle von Skripten verwendet. TY. - justingrif
Auf Xbunutu .profile wird nicht ausgeführt, also lege ich es in. Bashrc und es funktioniert. - tekumara
Diese Dokumentation ist sehr gut gemacht: Offizielle Dokumentation zur Umgebungsvariablen. Erwägen Sie, es zu lesen (um nicht zu sagen, dass auf die letzte Version der Regeln aktualisiert wird, um der Umgebungsvariablen Werte hinzuzufügen). - Michele
Wo in .profile fügen wir den Pfad hinzu? - Vineet Kaushik
Ich habe immer noch keine Ahnung, wo ich meinen zusätzlichen Pfad hinzufügen kann. Ich muss das Android SDK zu meinem Pfad hinzufügen ... PATH="$HOME/bin:$PATH" Also füge ich es hinzu? - Jamie Hutber


Bearbeiten .bashrc in Ihrem Home-Verzeichnis und fügen Sie die folgende Zeile hinzu:

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

Sie müssen Ihre Quelle beziehen .bashrc oder melden Sie sich ab (oder starten Sie das Terminal neu), damit die Änderungen wirksam werden. Um deine Quelle zu finden .bashrc, einfach eingeben

$ source ~/.bashrc

255
2017-07-22 20:45



Wie bekommst du deine Quelle? .bashrc"Wie starten Sie das Terminal neu?" - isomorphismes
In bash ist es einfach '. .bashrc - Ophidian
Ich nahm an, dass du in deinem Home-Verzeichnis warst. Da ist die .bashrc, die Sie bearbeiten möchten. - Ophidian
.bashrc ist nicht der richtige Ort für das Setzen von Umgebungsvariablen. Sie sollten reingehen .profile oder .pam_environment. Sehen mywiki.wooledge.org/DotFiles - geirha
@Lao Tzu . .bashrc nicht .bashrc :) oder source .bashrc für diese Angelegenheit - Znarkus


Der empfohlene Ort, um permanent zu definieren, systemweit Umgebungsvariablen, die für alle Benutzer gelten, sind:

/etc/environment

(Wo ist der Standardwert? PATH ist definiert)

Dies funktioniert in Desktop oder Konsole, Gnome-Terminal oder TTY, Regen oder Sonnenschein;)

  • Zum Bearbeiten drücken Sie Alt+F2 und geben Sie ein:

    gksudo gedit /etc/environment
    

    (oder öffnen Sie die Datei mit sudo in Ihrem bevorzugten Texteditor)

Führen Sie aus, um Änderungen zu bewirken . /etc/environment. Da diese Datei nur ein einfaches Skript ist, wird sie ausgeführt und dem neuen Pfad zugewiesen PATH Umgebungsvariable. Um zu überprüfen, laufen env und sehen Sie die PATH Wert in der Liste.

Verbunden:


101
2017-07-31 03:49



und dann müssen Sie neu starten, damit Änderungen wirksam werden ... - Lee
Genau das habe ich gebraucht. Bereitstellen eines Wegwerf-VM-Images über Vagrant und zum Hinzufügen von Node und Npm zum Pfad. - Austin Pray
Um Änderungen in Wirkung zu nehmen, laufen Sie. / etc / environement (Ja, Punkt, ein Leerzeichen und / etc / environment). Da diese Datei nur ein einfaches Skript ist, wird sie ausgeführt und der PATH-Umgebungsvariable der neue Pfad zugewiesen. Überprüfen Sie run env und sehen Sie den PATH-Wert in der Liste. - WindRider
Ich musste rennen source /etc/environment um die Änderungen neu zu laden - JohnnyAW


Ich denke, der kanonische Weg in Ubuntu ist:

  • Erstellen Sie eine neue Datei unter /etc/profile.d/

    sudo vi /etc/profile.d/SCRIPT_NAME.sh
    
  • Fügen Sie dort hinzu:

    export PATH="YOUR_PATH_WITHOUT_TRAILING_SLASH:$PATH"
    
  • und gib ihm Ausführungsberechtigung

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

54
2018-01-09 01:31



Es ist normalerweise sicherer, den benutzerdefinierten Pfad am Ende von PATH anstatt am Anfang hinzuzufügen. Dadurch wird vermieden, dass Systembefehle versehentlich durch Ihre Programme (oder die schädlichen Programme anderer Benutzer) ersetzt werden. Dies vermeidet auch eine Menge Verwirrung, wenn jemand anderes an Ihrem System arbeitet (oder Ihnen Ratschläge gibt) und sie erhalten unerwartete Ergebnisse von Befehlen, die Sie "ersetzt" haben. - Joe


Für komplette Neulinge (wie ich), die mit GUI vertrauter sind:

  1. Öffne dein $HOME Mappe.
  2. Gehe zu Aussicht → Zeige versteckte Dateien oder drücken Sie Strg + H.
  3. Rechtsklick auf .profile und klicke auf Mit Text-Editor öffnen.
  4. Scrolle nach unten und füge hinzu PATH="$PATH:/my/path/foo".
  5. Sparen.
  6. Melden Sie sich ab und wieder an, um Änderungen zu übernehmen (lassen Sie Ubuntu tatsächlich laden) .profile).

44
2017-10-24 22:05



Das Bearbeiten der .profile-Datei wird nicht mehr empfohlen. Sie können diese Methode weiterhin verwenden, um die Datei .pam_environment zu bearbeiten. help.ubuntu.com/community/UmweltVariablen - PulsarBlow
Danke @PulsarBlow! Ich bin mir nicht wirklich sicher, was genau der Unterschied und der Vorteil ist, aber ... Dies ist die direkte URL zu dem relevanten Abschnitt: help.ubuntu.com/community/... - dain
Diese Antwort führte dazu, dass sich mein System aufgrund der Überschreibung aller Pfade nicht mehr anmeldete. Verwenden von Ubuntu 16.04. - Frisbetarian
@Fribetarian musst du sicherstellen, dass du den $PATH: Bit, das die vorhandene PATH-Definition enthält - dain
@dain: Dein Kommentar hat mein Leben gerettet! - Py-ser


Für permanente Umgebungsvariablen, die nur bestimmten Benutzern zur Verfügung stehen. Ich empfehle die offizielle Dokumentation von Ubuntu.

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

Mit Bezug auf die obige Dokumentation habe ich mein Setup eingerichtet Android SDK-Pfadtools durch:

  1. Erstellen ~/.pam_environment Datei im Home-Verzeichnis.
  2. deren Inhalt ist PATH DEFAULT=${PATH}:~/android-sdk-linux/tools.
  3. Ein zusätzlicher benutzerdefinierter Benutzerpfad kann hinzugefügt werden, indem Pfade mit getrennt werden Doppelpunkt (:).
  4. Dies erfordert Erneut anmeldenDies bedeutet, dass Sie sich abmelden und in die Desktop-Umgebung einloggen müssen.

40
2017-12-08 23:07



Dies ist die beste Antwort. - Paulo Coghi


Setzen Sie diese Zeile in Ihre ~/.bashrc Datei.

Es wird abgerufen, wenn Sie ein Terminal öffnen

BEARBEITEN: Basierend auf den folgenden Kommentaren, für eine allgemeinere Einstellung, die für alle Shells gilt (einschließlich beim Treffer) Alt-F2 in Unity), füge die Zeile zu deiner hinzu ~/.profile Datei. Vermutlich sollte beides aber nicht sein, da der Pfad zweimal zu Ihrem hinzugefügt wird PATH Umgebung, wenn Sie ein Terminal öffnen.


25
2017-07-31 01:08



Eigentlich dachte ich, du würdest den Pfad in beiden setzen $HOME/.profile für persönliche Einstellungen oder /etc/profile für alle Benutzer. Aber wenn es nur für Bash benötigt wird, nehme ich an, dass es funktionieren wird. - Marty Fried
Wenn Sie es einstellen ~/.bashrcEs wird nur in den Terminals verfügbar sein, die Sie öffnen. Z.B. Wenn Sie Alt + F2 drücken und versuchen, einen Befehl von diesem Verzeichnis auszuführen, wird es nicht gefunden. Wenn Sie es einstellen ~/.profile oder ~/.pam_environment, die Gnome-Sitzung (oder welches DE du verwendest) erbt es. PATH anhängen in ~/.bashrc hat auch den Nachteil, dass wenn Sie interaktiv interaktiv von einer anderen interaktiven Bash Shell öffnen / ausführen, wird es mehrmals angehängt. - geirha
Ich habe mich eine Weile nicht wirklich damit beschäftigt, also habe ich eine Suche durchgeführt, und es scheint, dass es mindestens 95 verschiedene Wege gibt, den Pfad zu bestimmen, von denen die meisten diskutiert werden Hier. Ich habe nie herausgefunden, welches das Beste ist. Ich denke ~/.profile ist jedoch für persönliche Wege richtig; Das ist, wo Ubuntu das hinzufügt ~/bin Verzeichnis. Und ich gestehe, dass ich über die Anzahl der Wege ein wenig übertrieben habe - nur ein bisschen. - Marty Fried
@MartyFried, ja, um den Bot in #bash auf freenode zu zitieren: «Die überwältigende Mehrheit der Bash-Skripte, Code, Tutorials und Anleitungen im Internet sind Mist. Sturgeon war ein Optimist. »Mit Google für Bash Problem, finden Sie oft eine Reihe von halb-funktionierenden Lösungen, bevor Sie eine gute finden. Oh, und ich würde mitgehen ~/.profile Auch in diesem Fall. - geirha
@ Geirha - Ich stimme zu, dass die meisten Führer im Internet im Allgemeinen wahrscheinlich Mist, vor allem alles Linux seit verschiedenen Distributionen, oder sogar verschiedene Versionen des gleichen, Dinge anders machen. Es läuft normalerweise darauf hinaus, was funktioniert, aber die meisten Menschen erkennen nicht, dass das, was funktioniert, einfach das ist, was funktioniert, nicht notwendigerweise, was richtig ist oder auch, was immer funktionieren wird. Ich versuche herauszufinden, welche der vielen Möglichkeiten tatsächlich richtig ist, weil ich es hasse, Dinge mehr als einmal zu tun - aber es ist nicht immer einfach. :) - Marty Fried