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.