1091 Stimmen

Wie man $PATH unter Linux/Unix dauerhaft setzt

Wie kann ich unter Linux ein Verzeichnis zum $PATH hinzufügen, damit es über verschiedene Sitzungen hinweg bestehen bleibt?

Hintergrund

Ich versuche, ein Verzeichnis zu meinem Pfad hinzuzufügen, damit es immer in meinem Linux-Pfad enthalten ist. Ich habe es versucht:

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

Das funktioniert, aber jedes Mal, wenn ich das Terminal beende und eine neue Terminalinstanz starte, geht dieser Pfad verloren, und ich muss den Exportbefehl erneut ausführen.

Wie kann ich es so einrichten, dass diese Einstellung dauerhaft ist?

1236voto

mpowered Punkte 12537

Sie müssen es zu Ihrem ~/.profile o ~/.bashrc Datei.  

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

Je nachdem, was Sie tun, können Sie auch Symlinks zu Binärdateien verwenden:

cd /usr/bin
sudo ln -s /path/to/binary binary-name

Beachten Sie, dass Ihr Pfad dadurch nicht automatisch für den Rest der Sitzung aktualisiert wird. Zu diesem Zweck sollten Sie den Befehl ausführen:

source ~/.profile 
or
source ~/.bashrc

395voto

Grzegorz Żur Punkte 44454

Es gibt mehrere Möglichkeiten, dies zu tun. Die tatsächliche Lösung hängt vom Zweck ab.

Die Variablenwerte werden normalerweise entweder in einer Liste von Zuweisungen oder in einem Shell-Skript gespeichert, das zu Beginn der System- oder Benutzersitzung ausgeführt wird. Im Falle des Shell-Skripts müssen Sie eine bestimmte Shell-Syntax verwenden und export o set Befehle.

Systemweit

  1. /etc/environment Liste der einmaligen Zuweisungen. Erlaubt Referenzen. Perfekt für das Hinzufügen systemweiter Verzeichnisse wie /usr/local/something/bin a PATH Variable oder Definition JAVA_HOME . Benutzt von PAM y systemd .

  2. /etc/environment.d/*.conf Liste der einmaligen Zuweisungen. Erlaubt Referenzen. Perfekt für das Hinzufügen systemweiter Verzeichnisse wie /usr/local/something/bin a PATH Variable oder Definition JAVA_HOME . Die Konfiguration kann in mehrere Dateien aufgeteilt werden, normalerweise eine pro Tool (Java, Go und Node.js). Wird von systemd verwendet, das diese Werte nicht an Benutzer-Login-Shells weitergibt.

  3. /etc/xprofile Shell-Skript, das beim Starten einer X Window System-Sitzung ausgeführt wird. Es wird für jeden Benutzer ausgeführt, der sich beim X Window System anmeldet. Es ist eine gute Wahl für PATH Einträge, die für jeden Benutzer gültig sind, wie /usr/local/something/bin . Die Datei wird von einem anderen Skript eingebunden. Verwenden Sie daher die POSIX-Shell-Syntax und nicht die Syntax Ihrer Benutzer-Shell.

  4. /etc/profile y /etc/profile.d/* Shell-Skript. Dies ist eine gute Wahl für reine Shell-Systeme. Diese Dateien werden nur von Shells im Anmeldemodus gelesen.

  5. /etc/<shell>.<shell>rc . Shell-Skript. Dies ist eine schlechte Wahl, da es spezifisch für eine einzelne Shell ist. Wird im Nicht-Anmeldemodus verwendet.

Benutzer-Sitzung

  1. ~/.pam_environment . Liste eindeutiger Zuweisungen, keine Verweise erlaubt. Wird von PAM zu Beginn jeder Benutzersitzung geladen, unabhängig davon, ob es sich um eine X Window System-Sitzung oder eine Shell handelt. Sie können nicht auf andere Variablen verweisen, einschließlich HOME o PATH und ist daher nur begrenzt einsetzbar. Wird von PAM verwendet.

  2. ~/.xprofile Shell-Skript. Dieses wird ausgeführt, wenn sich der Benutzer beim X Window System anmeldet. Die hier definierten Variablen sind für jede X-Anwendung sichtbar. Perfekte Wahl für die Erweiterung von PATH mit Werten wie ~/bin o ~/go/bin oder die Definition benutzerspezifischer GOPATH o NPM_HOME . Die Datei wird von einem anderen Skript eingebunden. Verwenden Sie daher die POSIX-Shell-Syntax und nicht die Syntax Ihrer Benutzer-Shell. Ihr grafischer Texteditor oder die IDE, die Sie per Tastenkombination starten, wird diese Werte sehen.

  3. ~/.profile , ~/.<shell>_profile , ~/.<shell>_login Shell-Skript. Es ist nur für Programme sichtbar, die vom Terminal oder Terminalemulator aus gestartet werden. Es ist eine gute Wahl für reine Shell-Systeme. Wird von Shells im Anmeldemodus verwendet.

  4. ~/.<shell>rc . Shell-Skript. Dies ist eine schlechte Wahl, da es spezifisch für eine einzelne Shell ist. Wird von Shells im Nicht-Anmeldemodus verwendet.

Anmerkungen

GNOME オン Wayland startet eine Shell zur Benutzeranmeldung, um die Umgebung zu erhalten. Es verwendet effektiv die Konfigurationen der Login-Shell ~/.profile , ~/.<shell>_profile , ~/.<shell>_login Dateien.

Mann-Seiten

Vertriebsspezifische Dokumentation

Verwandte Seiten

Unterschied zwischen Login-Shell und Non-Login-Shell?

265voto

trve.fa7ad Punkte 4269

In Ubuntu, bearbeiten Sie /etc/environment . Sein einziger Zweck ist die Speicherung _Umgebungsvariablen_ . Ursprünglich ist hier die Variable $PATH definiert.

Dies ist ein Auszug aus meinem /etc/environment Datei:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"

Sie können diese Datei also einfach als Root öffnen und hinzufügen, was Sie wollen.

Para sofort Ergebnisse,

Ausführen (als normaler Benutzer versuchen y Wurzel):

source /etc/environment && export PATH

Wenn Sie die Z-Shell ( zsh ), fügen Sie diese Zeile direkt nach den Kommentaren in /etc/zsh/zshenv Datei:

source /etc/environment

_Ich bin auf diese kleine Macke gestoßen bei Ubuntu 15.10 (Wily Werewolf), aber wenn Ihr zsh erhält nicht die richtige PATH könnte dies der Grund sein._

88voto

ashastral Punkte 2740

Für Bash können Sie die export Erklärung in ~/.bashrc . Meine .bashrc enthält zum Beispiel diese Zeile:

export PATH=/var/lib/gems/1.8/bin:/home/ash/.bin:$PATH

37voto

Mohit M Punkte 749

Sie können einstellen $PATH dauerhaft auf zwei Arten.

  1. So legen Sie den Pfad für einen bestimmten Benutzer fest:

    Möglicherweise müssen Sie den Eintrag in der Datei .bash_profile im Heimatverzeichnis des Benutzers.

    In meinem Fall werde ich z. B. die java Pfad im Tomcat-Benutzerprofil*

     echo "export PATH=$PATH:/path/to/dir" >> /home/tomcat/.bash_profile
  2. So legen Sie einen gemeinsamen Pfad für todos Systembenutzer, müssen Sie den Pfad möglicherweise wie folgt festlegen:

     echo "export PATH=$PATH:/path/to/dir" >> /etc/profile

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X