Dieser Artikel erklärt die Reihenfolge, in der die folgenden Dateien ausgeführt werden:
- /etc/profile
- ~/.bash_profile
- ~/.bashrc
- ~/.bash_login
- ~/.profile
- ~/.bash_logout
Ausführungssequenz für interaktive Login-Shell
Der folgende Pseudocode erklärt die Abfolge der Ausführung dieser Dateien.
execute /etc/profile IF ~/.bash_profile exists THEN execute ~/.bash_profile ELSE IF ~/.bash_login exist THEN execute ~/.bash_login ELSE IF ~/.profile exist THEN execute ~/.profile END IF END IF END IF
Wenn Sie sich von der interaktiven Shell abmelden, ist die folgende Ausführungsreihenfolge:
IF ~/.bash_logout exists THEN execute ~/.bash_logout END IF
Bitte beachten Sie, dass /etc/bashrc wie unten gezeigt von ~/.bashrc ausgeführt wird:
# cat ~/.bashrc if [ -f /etc/bashrc ]; then . /etc/bashrc fi
Ausführungssequenz für interaktive Nicht-Login-Shell
Beim Starten einer interaktiven Shell ohne Anmeldung ist die folgende Ausführungssequenz:
IF ~/.bashrc exists THEN execute ~/.bashrc END IF
Hinweis: Wenn eine nicht-interaktive Shell gestartet wird, sucht sie nach der Umgebungsvariablen ENV und führt den Dateinamenwert aus, der in der ENV-Variablen erwähnt wird.
Testen Sie die Ausführungsreihenfolge
Eine Möglichkeit, die Ausführungsreihenfolge zu testen, besteht darin, diesen Dateien verschiedene PS1-Werte hinzuzufügen, sich erneut bei der Shell anzumelden und zu sehen, welcher PS1-Wert von der Linux-Eingabeaufforderung erfasst wurde. Außerdem haben wir zuvor darüber gesprochen, wie Sie PS1 verwenden können, um Ihre Linux-Eingabeaufforderung sowohl funktional als auch elegant zu gestalten.
1. /etc/profile wird ausgeführt. Fügen Sie die folgende PS1-Zeile zu /etc/profile hinzu und melden Sie sich erneut an, um sicherzustellen, dass sich die Linux-Eingabeaufforderung in den PS1-Wert ändert, der in /etc/profile festgelegt ist.
# grep PS1 /etc/profile PS1="/etc/profile> " [Note: re-login to see the prompt change as shown below] Last login: Sat Sep 27 16:43:57 2008 from 192.168.1.2 /etc/profile>
Bitte stelle sicher, dass ~/.bash_profile kein PS1 hat, damit das oben Genannte richtig funktioniert.
2. ~/.bash_profile wird ausgeführt: Fügen Sie die folgende PS1 zu ~/.bash_profile, ~/.bash_login, ~/.profile und ~/.bashrc hinzu. Melden Sie sich erneut an, um sicherzustellen, dass sich die Linux-Eingabeaufforderung wie unten gezeigt in den PS1-Wert ändert, der in ~/.bash_profile festgelegt ist.
/etc/profile> grep PS1 ~/.bash_profile export PS1="~/.bash_profile> " /etc/profile> grep PS1 ~/.bash_login export PS1="~/.bash_login> " /etc/profile> grep PS1 ~/.profile export PS1="~/.profile> " /etc/profile> grep PS1 ~/.bashrc export PS1="~/.bashrc> " [Note: Upon re-login, it executed /etc/profile first and ~/.bash_profile next. So, it took the PS1 from ~/.bash_profile as shown below. It also did not execute ~/.bash_login, as ~/.bash_profile exists] Last login: Sat Sep 27 16:48:11 2008 from 192.168.1.2 ~/.bash_profile>
3. ~/.bash_login wird ausgeführt. Benennen Sie .bash_profile in etwas anderes um. Melden Sie sich erneut an, um sicherzustellen, dass sich die Linux-Eingabeaufforderung wie unten gezeigt in den PS1-Wert ändert, der in ~/.bash_login festgelegt ist.
~/.bash_profile> mv .bash_profile bash_profile_not_used [Note: Upon re-login, it executed /etc/profile first. Since it cannot find ~/.bash_profile, it executed ~/.bash_login] Last login: Sat Sep 27 16:50:55 2008 from 192.168.1.2 ~/bash_login>
4. ~/.profile wird ausgeführt. Benennen Sie die .bash_login in etwas anderes um. Melden Sie sich erneut an, um sicherzustellen, dass sich die Linux-Eingabeaufforderung wie unten gezeigt in den PS1-Wert ändert, der in ~/.profile festgelegt ist.
~/.bash_login> mv .bash_login bash_login_not_used [Note: Upon re-login, it executed /etc/profile first. Since it cannot find ~/.bash_profile and ~/.bash_login, it executed ~/.profile] Last login: Sat Sep 27 16:56:36 2008 from 192.168.1.2 ~/.profile>
5. ~/.bashrc wird für Shell-Tests ohne Anmeldung ausgeführt . Ausführen von “ bash“ an der Eingabeaufforderung wird eine weitere Nicht-Login-Shell angezeigt, die .bashrc wie unten gezeigt aufruft.
~/.profile> bash [Note: This displays PS1 from .bashrc as shown below.] ~/.bashrc> exit exit [Note: After exiting from non-login shell, we are back to login shell] ~/.profile>
Wenn Ihnen dieser Artikel gefällt, markieren Sie ihn bitte auf del.icio.us und stolpern .