GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie setze ich $PATH dauerhaft unter Linux/Unix?

Sie müssen es zu Ihrem ~/.profile hinzufügen oder ~/.bashrc Datei.

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

Je nachdem, was Sie tun, möchten Sie vielleicht auch einen Symlink zu Binärdateien erstellen:

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

Beachten Sie, dass dadurch Ihr Pfad für den Rest der Sitzung nicht automatisch aktualisiert wird. Dazu sollten Sie Folgendes ausführen:

source ~/.profile 
or
source ~/.bashrc

Bearbeiten Sie in Ubuntu /etc/environment . Sein einziger Zweck ist das Speichern von Umgebungsvariablen . Ursprünglich ist hier die Variable $PATH definiert.

Dies ist eine Paste 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.

Für sofort Ergebnisse,

Ausführen (versuchen Sie es als normaler Benutzer und root):

source /etc/environment && export PATH

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

source /etc/environment

Ich bin auf diese kleine Macke auf Ubuntu 15.10 (Wily Werewolf) gestoßen, aber wenn Ihr zsh erhält nicht den richtigen PATH , das könnte der Grund sein.


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 beim Start des Systems oder der Benutzersitzung ausgeführt wird. Im Fall des Shell-Skripts müssen Sie eine bestimmte Shell-Syntax und export verwenden oder set Befehle.

Systemweit

  1. /etc/environment Liste der eindeutigen Zuordnungen. Erlaubt Referenzen. Perfekt zum Hinzufügen von systemweiten Verzeichnissen wie /usr/local/something/bin bis PATH Variable oder Definition von JAVA_HOME . Wird von PAM und Systemd verwendet.

  2. /etc/environment.d/*.conf Liste der eindeutigen Zuordnungen. Erlaubt Referenzen. Perfekt zum Hinzufügen von systemweiten Verzeichnissen wie /usr/local/something/bin bis PATH Variable oder Definition von 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 absichtlich nicht an Benutzeranmelde-Shells weitergibt.

  3. /etc/xprofile Shell-Skript, das beim Starten der X Window System-Sitzung ausgeführt wird. Dies 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 also die POSIX-Shell-Syntax und nicht die Syntax Ihrer Benutzer-Shell.

  4. /etc/profile und /etc/profile.d/* Shell-Skript. Dies ist eine gute Wahl für Nur-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 sich um eine einzelne Schale handelt. Wird im Nicht-Anmeldemodus verwendet.

Benutzersitzung

  1. ~/.pam_environment . Liste der eindeutigen Zuordnungen, keine Referenzen erlaubt. Wird von PAM zu Beginn jeder Benutzersitzung geladen, unabhängig davon, ob es sich um eine X Window System-Sitzung oder -Shell handelt. Sie können nicht auf andere Variablen einschließlich HOME verweisen oder PATH also nur bedingt nutzbar. Wird von PAM verwendet.

  2. ~/.xprofile Shell-Skript. Dies wird ausgeführt, wenn sich der Benutzer beim X Window System-System anmeldet. Die hier definierten Variablen sind für jede X-Anwendung sichtbar. Perfekte Wahl zum Erweitern von PATH mit Werten wie ~/bin oder ~/go/bin oder benutzerspezifisch definieren GOPATH oder NPM_HOME . Die Datei wird von einem anderen Skript eingebunden, verwenden Sie also die POSIX-Shell-Syntax und nicht die Syntax Ihrer Benutzer-Shell. Ihr grafischer Texteditor oder Ihre per Shortcut gestartete IDE sieht diese Werte.

  3. ~/.profile , ~/.<shell>_profile , ~/.<shell>_login Shell-Skript. Es ist nur für Programme sichtbar, die vom Terminal oder Terminal-Emulator 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 sich um eine einzelne Schale handelt. Wird von Shells im Nicht-Anmeldemodus verwendet.

Notizen

GNOME auf Wayland startet eine Benutzeranmelde-Shell, um die Umgebung abzurufen. Es verwendet effektiv die Login-Shell-Konfigurationen ~/.profile , ~/.<shell>_profile , ~/.<shell>_login Dateien.

Manpages

  • Umgebung
  • environment.d https://linux.die.net/man/1/environment.d
  • Bash
  • Bindestrich

Distributionsspezifische Dokumentation

  • Ubuntu
  • Arch-Linux

Unterschied zwischen Login-Shell und Nicht-Login-Shell?


Linux
  1. Erfahren Sie, wie Sie Ihre $PATH-Variablen unter Linux dauerhaft festlegen

  2. So setzen/erstellen Sie Umgebungs- und Shell-Variablen in Linux

  3. So setzen Sie die $Path-Variable in Linux

  4. Linux / UNIX :So finden Sie Dateien, für die SUID/SGID festgelegt ist

  5. rbash – Setze eingeschränkte Shell in Linux

So richten Sie einen Cron-Job unter Linux ein

So fügen Sie ein Verzeichnis zu PATH in Linux hinzu

So legen Sie den Hostnamen unter Linux fest oder ändern ihn

So debuggen Sie Bash-Skripte in Linux und Unix

So ändern Sie eine Benutzer-Shell in Linux

So legen Sie $PATH im Linux-System dauerhaft fest