Ich habe viele Leute gefunden, die herausgefunden haben, warum Anweisungen ähnlich wie diese sind:
Put X to your ~/.bashrc and you can do Y
funktionieren nicht.
Es stellt sich immer heraus, dass die Startdateien der Bash von Mac OS X (oder die Bash von Mac selbst) keine ~/.bashrc-Datei liefern, weder in der Login-Shell noch in einer Shell, die vom Windows-System erzeugt wird - wie die Terminal-App in Mac OS X)
Warum ist das so, wenn alle anderen Unix-ähnlichen Systeme mit Bash, mit denen ich zuvor gearbeitet habe, dies getan haben?
PS:
Ich habe gefunden, was Bash selbst über Startdateien sagt (was hilfreich sein könnte):
Wenn Bash als interaktive Login-Shell oder als nicht-interaktive Shell mit der Option --login aufgerufen wird, liest es zuerst Befehle aus der Datei /etc/profile und führt sie aus, falls diese Datei existiert. Nach dem Lesen dieser Datei sucht es in dieser Reihenfolge nach ~/.bash_profile, ~/.bash_login und ~/.profile und liest und führt Befehle von der ersten Datei aus, die existiert und lesbar ist. Die Option --noprofile kann verwendet werden, wenn die Shell gestartet wird, um dieses Verhalten zu verhindern.
Quelle: http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files
In OSX startet das Terminal standardmäßig eine Anmeldesitzung, liest also .bash_profile usw. (Der GUI-Anmeldeprozess, der nach Ihrem Namen und Passwort fragt, verwendet keine Shell-Skripte und startet keine Shell, es wird alles von launchd und dem Arbeitsbereich erledigt)
Auf anderen Unices führt xterm standardmäßig eine Non-Login-Shell aus, sodass sie .bashrc lesen, da die Skripte, die Ihnen bei der Anmeldung Ihr Passwort usw. anzeigen, die Anmeldesitzung aufrufen und alle Terminals Teilprozesse davon sind und die Shell-Umgebung erben.
Aus dem GNU-Dokument, auf das Sie sich bezogen haben
Wird als interaktive Shell ohne Anmeldung aufgerufen
Wenn eine interaktive Shell gestartet wird, die keine Login-Shell ist, liest Bash Befehle aus ~/.bashrc und führt sie aus, falls diese Datei existiert. Dies kann durch die Verwendung der Option --norc verhindert werden. Die Dateioption --rcfile zwingt Bash dazu, Befehle aus der Datei statt aus ~/.bashrc zu lesen und auszuführen.
Normalerweise enthält Ihr ~/.bash_profile also die Zeile
if [ -f ~/.bashrc ]; then . ~/.bashrc; fi
nach (oder vor) Anmelde-spezifischen Initialisierungen.
bash
liest nur .bashrc
für Nicht-Login- Shells:
Wenn eine interaktive Shell gestartet wird, die keine Login-Shell ist, liest und führt bash Befehle aus ~/.bashrc aus, falls diese Datei existiert. Dies kann durch die Verwendung der Option --norc verhindert werden. Die Dateioption --rcfile zwingt Bash, Befehle aus der Datei anstelle von ~/.bashrc zu lesen und auszuführen.
Da Terminal bash
als Login-Shell startet (ausführen , um w
zu sehen, dass die bash
Instanzen als ausgeführt werden -bash
), .bashrc
wird es nie automatisch gelesen.
igauravsehrawat
~/.bash_profile
das aber nicht ausgeführt wird~/.bashrc
. Seltsam.