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.