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

Vollständige Ansicht, wo die Pfadvariable in Bash festgelegt ist?

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.


Linux
  1. Die Bash‘?

  2. Wo wird die Term-Umgebungsvariable Default gesetzt?

  3. Wo ist die Inittab-Datei?

  4. Wie normalisiert man einen Dateipfad in Bash?

  5. Variable in Bash-Skript, die ihren Wert von der letzten Ausführung beibehält

Die 6 besten Möglichkeiten zum Anzeigen von Dateien unter Linux

Zeigen Sie den Inhalt einer Datei in der Linux-Befehlszeile an

So setzen Sie die Umgebungsvariable in Bash

Wo ist die php.ini-Datei auf einem Linux/CentOS-PC?

Wie liest man die letzte Zeile einer Textdatei mit Bash in eine Variable?

Wo wird die Umgebungsvariable $HOME gesetzt?