Wie ändere ich meinen PATH, damit die Änderungen in jeder Terminal-Sitzung verfügbar sind?


53

Ich möchte ein Verzeichnis hinzufügen, um meinen Suchpfad zu durchsuchen. Ich weiß, dass ich die PATHUmgebungsvariable ändern muss . Ich möchte jedoch, dass die Änderung dauerhaft ist, damit sie für jedes Terminal-Fenster, das ich öffne, immer wirksam ist.

In https://help.ubuntu.com/community/EnvironmentVariables sind viele verwirrende und möglicherweise widersprüchliche Informationen enthalten

Ich benutze Ubuntu 10.04. Angenommen, ich möchte /usr/local/foozu meinem hinzufügen PATH. Welche Datei ( .bashrc, .profile, .bash_login, etc ...) soll ich ändern und was sollte die neue Zeile (n) aus?

Antworten:


70

Der folgende Befehl fügt Ihrem aktuellen Pfad einen Pfad hinzu:

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

Wenn Sie möchten, dass Ihr Setup diesen Befehl jedes Mal ausführt, können Sie ihn an mehreren Stellen ablegen. Wenn Sie sich anmelden, werden die folgenden Skripte in dieser Reihenfolge ausgeführt:

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

Anmerkungen

  • ~/.profile wird nur geladen, wenn ~/.bash_profileund ~/.bash_loginNICHT EXISTIEREN. Andernfalls werden sie zumindest durch Bash geladen. Es wird empfohlen, .profilenicht die bash-spezifischen Skripte zu verwenden. Wenn Sie in diesen Versuchen etwas erstellt haben .bash_login, löschen Sie es jetzt.

  • ~/.bashrcwird nur geladen, wenn Sie eine interaktive Sitzung ausführen. (etwas mit einer Eingabeaufforderung, in die Sie tatsächlich etwas eingeben können).

  • ~/.bashrcwird immer wieder geladen, wenn Sie ein neues Terminal öffnen . Also ein neuer Tab im Gnome-Terminal, ein neues virtuelles Terminal usw. Auch wenn Sie sich nicht erneut anmelden, .bashrcwird jedes Mal geladen (und damit die Umgebung zurückgesetzt), wenn Sie eine neue Shell öffnen.

  • Dinge wie Byobu sollten wirklich reingehen .profile, sonst klappt es nicht ;-)

  • Dinge wie Pfade sollten eingegeben werden, .profilewenn Sie möchten, dass sie außerhalb der interaktiven Sitzungen funktionieren. (Sagen Sie, wenn Sie in GNOME Alt+ drücken F2)


Ich werde dies als Antwort markieren, wenn Sie es so aktualisieren, dass es die angeforderte Exportzeile enthält, die zu .profile hinzugefügt werden soll.
Joshua Flanagan

Dies galt früher nur für Konsolenanmeldungen (z. B. ssh oder die für Strg + Alt + Fx zugänglichen virtuellen Terminals). Ich wusste in diesen Tagen nicht, dass / etc / gdm / Xsession Quellen ~ / .profile. Ordentlich!
Marius Gedminas

Ja, ich habe / etc / gdm / Xsession nicht speziell oder ~ / .Xprofile erwähnt, weil es bessere Möglichkeiten gibt, grafische Programme beim Start zu starten, was garantiert, dass der Rest der Umgebung bereits geladen ist.
Ralf,

1
Um diese Antwort umfassender zu gestalten, fügen Sie bitte den Kommentar von MattH zur Beschaffung von ~ / .profile hinzu, um Änderungen ohne einen Abmelde- / Ein-Zyklus zu aktivieren.
Matt Wilkie

1
@schwiz: ~/.profilewird nicht auf jedem Terminal ausgeführt, sondern vor dem Start Ihrer Desktop-Sitzung. ~/.bashrc
Derjenige, der

13

Ich habe es durch Modifizieren zum Laufen gebracht ~/.profile

Es sieht so aus, als wäre das Hinzufügen von ~ / bin zu meinem Pfad ein schlechtes Beispiel, da es bereits Code in ~ / .profile gibt, der das automatisch erledigt, wenn das Verzeichnis existiert.

Um das Verzeichnis usr / local / foo für jede weitere Sitzung zu meinem Pfad hinzuzufügen, füge ich am Ende meines .profile die folgende Zeile hinzu / bearbeite sie:

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

Um dies zu bewirken, musste ich mich jedoch abmelden und wieder anmelden (das Schließen des Terminal-Fensters und das Öffnen eines neuen Fensters funktionierten NICHT).


4
Machen Sie das export PATH="$PATH:/usr/foo", falls Sie jemals Leerzeichen oder andere Sonderzeichen in haben $PATH.
Gilles 'SO- hör auf böse zu sein'

3
Sie können die aktuelle Umgebung neu laden, ohne sich abzumelden, indem Sie ". ~ / .Profile"
Matt H

1
@MattH: Nein, kannst du nicht. wenn Sie Quelle ~/.profilein einem bestimmten Terminal, wird es für dieses Endgerät wirksam nur
MestreLion

@MestreLion - Sie haben recht. Ich erwähnte es aus Bequemlichkeitsgründen für das aktuelle Terminal. Ich habe vergessen, das hinzuzufügen.
Matt H

Was ist, wenn ich bereits etwas in PATH habe? Könnte ich es anhängen, wie PATHS in Windows funktionieren? Zum Beispiel habe ich PATH="$HOME/bin:$HOME/.local/bin:$PATH"schon.
Gabriel Fair

4

Führen Sie Folgendes aus, um .profile neu zu laden und die Änderungen ohne Abmelden / Anmelden zu übernehmen:

source ~/.profile

Dies sollte ein Kommentar zur vorherigen Antwort sein
Pavlo Zhukov

3

Sie können den Pfad hinzufügen /etc/environment, aber beachten Sie, dass keine Shell-Erweiterungen funktionieren werden. Die Variable wird so eingestellt, dass sie buchstäblich die von Ihnen eingegebenen Zeichen enthält.


Welche der beiden Methoden (Hinzufügen des Exportbefehls in .profile und Hinzufügen des vollständigen Pfadnamens zu PATH in etc / environment) sollte bevorzugt werden?
Rohan Bhatia

2

Sie können die .bashrcDatei in Ihrem $HOMEVerzeichnis ändern .

Fügen Sie am Ende dieser Datei die folgende Zeile hinzu:

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

Sie können die .profileDatei auch in Ihrem $HOMEVerzeichnis ändern , einschließlich der folgenden Zeile:

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

Das hat bei mir funktioniert.


2
Ich verstehe nicht, was dies zu den anderen Antworten hinzufügt, die ausführlicher erklären.
Zanna

Dies ist die richtige Antwort, wenn Sie Änderungen vornehmen möchten, die sich auf Terminalfenster auswirken. Das Ändern .profilehat in Terminalfenstern keine Auswirkung.
Markus Laire

0

Wenn Sie ohmyzsh haben, gehen Sie über das Terminal in Ihr Home-Verzeichnis und geben Sie Folgendes ein

nano .zshrc

Am Ende der Datei eingeben

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

Schließlich starten Sie Ihr Terminal neu. Hat für mich gearbeitet. Hoffe das war hilfreich.


-3
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

Dies ist falsch und funktioniert nicht. Parameter Expansion in nicht ausgeführt/etc/environment
Zanna
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.