Zum Problem mit .bashrc
oben:
Auf den meisten Systemen wird ~/.bashrc
nur beim Start einer interaktiven nicht eingeloggten Shell verwendet. Wenn Sie jedoch eine neue Shell starten, ist es oft eine interaktive Login-Shell. Da es sich um eine Anmeldeshell handelt, wird die .bashrc
ignoriert. Um die Umgebung zwischen Nicht-Login- und Login-Shell konsistent zu halten, müssen Sie die .bashrc
von Ihrer .profile
oder Ihrer .bash_profile
beziehen.
Siehe das Bash-Referenzhandbuch, Abschnitt 6. 2 Bash-Startdateien
Aufgerufen als interaktive Anmeldeshell, oder mit –login
Wenn die Bash als interaktive Anmeldeshell oder als nicht-interaktive Shell mit der Option –login aufgerufen wird, liest sie zunächst die Datei /etc/profile, falls diese Datei existiert, und führt Befehle aus. Nachdem sie diese Datei gelesen hat, sucht sie nach ~/.bash_profile, ~/.bash_login und ~/.profile, in dieser Reihenfolge, und liest und führt Befehle aus der ersten aus, die existiert und lesbar ist.
Aufgerufen als interaktive Shell ohne Login-Shell
Wenn eine interaktive Shell, die keine Login-Shell ist, gestartet wird, liest die Bash Befehle aus ~/ und führt sie aus. bashrc, falls diese Datei existiert.
Also enthält Ihr ~/.bash_profile typischerweise die Zeile
if [-f ~/.bashrc]; then . ~/.bashrc; fi
nach (oder vor) irgendwelchen login-spezifischen Initialisierungen.
Auf meinem Mac (unter Leopard) gab es keine Zeile zur Quelle ~/.bashrc
. Ich mußte diese Funktionalität selbst hinzufügen.
Auf einigen Systemen und anderen Betriebssystemen wird .bashrc
aus dem globalen /etc/profile
oder /etc/bash_profile
bezogen, oder es werden die Vorlagendateien aus /etc/skel
verwendet.
Um ehrlich zu sein, wird der Unterschied zwischen .bashrc
und .bash_profile
von der Gemeinschaft nicht gut verstanden. Wenn viele Entwickler sagen: “Fügen Sie das zu Ihrer .bashrc hinzu”, meinen sie in Wirklichkeit: “Fügen Sie das zu Ihrem .bash_Profil hinzu”. Sie wollen, dass die Funktionalität zu Ihrer Anmeldeshell (also `.bashprofile) hinzugefügt wird, nicht zu Ihrer _Nicht-Anmeldeshell_. In Wirklichkeit spielt das normalerweise keine Rolle, und die Platzierung der Konfiguration in
.bashrc` ist akzeptabel.