Diese Frage hat hier bereits eine Antwort:
- Warum läuft .bashrc nicht automatisch? 13 Antworten
Ich habe viele Leute gefunden, die herausgefunden haben, warum eine Anweisung ähnlich der folgenden ist:
Put X to your ~/.bashrc and you can do Y
arbeite nicht
Es stellt sich immer heraus, dass die Startdateien von Mac OS X (oder Macs Bash selbst) keine ~ / .bashrc-Datei enthalten, weder in der Anmeldeshell noch in einer Shell, die vom Windows-System stammt (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 herausgefunden, was Bash selbst über Startdateien sagt (was hilfreich sein könnte):
Wenn Bash als interaktive Anmeldeshell oder als nicht interaktive Shell mit der Option --login aufgerufen wird, werden zuerst Befehle aus der Datei / etc / profile gelesen und ausgeführt, sofern diese Datei vorhanden ist. Nach dem Lesen dieser Datei sucht sie in dieser Reihenfolge nach ~ / .bash_profile, ~ / .bash_login und ~ / .profile und liest und führt Befehle von der ersten Datei aus, die vorhanden und lesbar ist. Die Option --noprofile kann verwendet werden, wenn die Shell gestartet wird, um dieses Verhalten zu unterbinden.
Quelle: http://www.gnu.org/software/bash/manual/bashref.html#Bash-Startup-Files
quelle
~/.bash_profile
das aber nicht ausgeführt wird~/.bashrc
. Komisch.Antworten:
In OSX startet das Terminal standardmäßig eine Anmeldesitzung mit dem Namen .bash_profile usw. (Der GUI-Anmeldevorgang, bei dem Sie nach Ihrem Namen und Kennwort gefragt werden, verwendet keine Shell-Skripte und startet keine Shell. Alles wird über launchd und den Arbeitsbereich ausgeführt.)
Auf anderen Unices führt xterm standardmäßig eine Nicht-Login-Shell aus, so dass sie .bashrc als die Skripte lesen, die Ihnen bei der Anmeldung Ihr Passwort usw. vorlegen. Rufen Sie die Anmeldesitzung auf, und alle Terminals sind Teilprozess dieses Prozesses und erben die Shell-Umgebung.
Aus dem GNU-Dokument, auf das Sie sich bezogen haben
quelle
bash
Liest nur.bashrc
für nicht angemeldete Shells:Da Terminal
bash
als Login-Shell startet (ausführen, umw
zu sehen, wie diebash
Instanzen ausgeführt werden-bash
),.bashrc
wird es nie automatisch gelesen.quelle