Ich habe an einigen Stellen gelesen, dass der PATH
wird in /etc/profile
festgelegt oder das .profile
Datei, die sich im Home-Verzeichnis befindet.
Sind dies die einzigen Orte, an denen der Pfad festgelegt ist? Ich möchte es besser verstehen.
In /etc/profile
Datei, wie der folgende Kommentar sagt "system-wide .profile file for the Bourne shell"
. Bedeutet das, dass Profildateien die Hauptkonfigurationsdateien für bash sind?
In dieser Datei sehe ich den PATH
nicht var überhaupt gesetzt wird. Im .profile
Datei im Home-Verzeichnis gibt es diese Zeile:
PATH="$HOME/bin:$PATH"
Das setzt PATH
zurück dem Aussehen nach, weil es den bereits gesetzten $PATH
verkettet Zeichenfolge mit $HOME/bin:
Rechts? Aber wenn etc/profile
und ~/.profile
sind die einzigen Dateien, die PATH
festlegen wo ist $PATH
aus dieser Codezeile kommen, wenn sie nicht in /etc/profile
definiert ist ?
Kann jemand erfahrener bitte eine breite und detaillierte Erklärung des PATH
geben Variable? Danke!
Akzeptierte Antwort:
Es gibt viele Stellen, an denen PATH
eingestellt werden.
Die login
Programm setzt es auf einen Standardwert. Wie dieser Standardwert konfiguriert wird, ist systemabhängig. Auf den meisten nicht eingebetteten Linux-Systemen wird es aus /etc/login.defs
entnommen , mit unterschiedlichen Werten für root und für andere Benutzer. Konsultieren Sie den login(1)
Handbuch auf Ihrem System, um herauszufinden, was es tut.
Auf Systemen, die PAM verwenden, insbesondere pam_env
Modul können Umgebungsvariablen in der systemweiten Datei /etc/environment
gesetzt werden und die benutzerspezifische Datei ~/.pam_environment
.
Dann führen die meisten Anmeldemöglichkeiten (aber keine Cron-Jobs) eine Login-Shell aus, die systemweite und benutzerspezifische Konfigurationsdateien liest. Diese Dateien können den Wert von PATH
ändern , normalerweise um Einträge hinzuzufügen, manchmal aber auch auf andere Weise. Welche Dateien gelesen werden, hängt von der Login-Shell ab. Shells im Bourne/POSIX-Stil lesen /etc/profile
und ~/.profile
. Bash liest /etc/profile
, aber für die Datei pro Benutzer liest es nur die erste vorhandene Datei unter ~/.bash_profile
, ~/.bash_login
und ~/.profile
. Zsh liest /etc/zshenv
, ~/.zshenv
, /etc/zprofile
, ~/.zprofile
, /etc/zlogin
und ~/.zlogin
. Viele GUI-Sitzungen laden /etc/profile
und ~/.profile
, aber dies hängt vom Display-Manager, von der Desktop-Umgebung oder einem anderen Sitzungsstartskript ab und davon, wie jede Distribution diese eingerichtet hat.