Ich habe einen Alias, den ich zu .bashrc hinzugefügt habe, und er wird erst im Terminal aktiviert, nachdem ich den Befehl 'bash' ausgeführt habe. Ich habe das Gefühl, ich sollte wissen, was hier passiert, aber ich weiß es nicht. :) :)
Ich habe einen Alias, den ich zu .bashrc hinzugefügt habe, und er wird erst im Terminal aktiviert, nachdem ich den Befehl 'bash' ausgeführt habe. Ich habe das Gefühl, ich sollte wissen, was hier passiert, aber ich weiß es nicht. :) :)
Antworten:
Abhängig von der Version von OS X, die Sie verwenden, ist Ihre Standard-Shell möglicherweise nicht bash. Sie können dies überprüfen, indem Sie Folgendes eingeben (bevor Sie 'bash' ausführen):
$ echo $SHELL
/bin/zsh
Sie können Ihre Standard-Shell in bash ändern, damit Sie den Befehl nicht weiter ausführen müssen, indem Sie die folgenden Anweisungen befolgen:
/server/21044/how-do-i-change-a-users-default-shell-in-osx
Von @ chopper3
für <= 10.4 - netinfo manager, / users / whoever / shell
für 10.5 => - SysPrefs, Konten, bei gedrückter Ctrl-Taste auf Benutzer klicken, erweiterte Optionen auswählen, Anmelde-Shell-Feld bearbeiten.
Um Ihre Frage weiter zu beantworten, wird .bashrc nur von der Bash-Shell verwendet. Wenn Sie möchten, können Sie herausfinden, welche Shell Sie verwenden, und den Alias zu .tcshrc oder .zshrc hinzufügen, anstatt alles zu ändern, um bash zu verwenden.
Weitere Informationen darüber, was eine Shell ist:
http://en.wikipedia.org/wiki/Shell_(computing)
und speziell schlagen:
Von man bash
:
Wenn eine interaktive Shell gestartet wird, die keine Anmeldeshell ist, liest bash Befehle von und führt sie aus
~/.bashrc
, sofern diese Datei vorhanden ist.
Hervorhebung von mir
Unter OS X werden in allen Terminalfenstern und Registerkarten Anmeldeshells ausgeführt. Dies entspricht der Ausführung bash --login
anstelle von bash
. ~/.bashrc
wird daher ignoriert, es sei denn, explizit source
d von z ~/.bash_profile
.
Wenn bash als interaktive Anmeldeshell aufgerufen wird, [...] liest es zuerst Befehle aus der Datei und führt sie aus
/etc/profile
, falls diese Datei vorhanden ist. Nachdem die Datei zu lesen, sucht er nach~/.bash_profile
,~/.bash_login
und~/.profile
in dieser Reihenfolge, und liest und die Befehle ausführt , von der ersten , die lesbar existiert und ist.
Erstellen ~/.bash_profile
Sie einfach, wenn es nicht vorhanden ist, und fügen Sie die folgende Zeile hinzu:
. .bashrc
Dann .bashrc
wird auch für Anmeldesitzungen geladen.
Der Alias funktioniert nach dem Ausführen nicht bash
- er funktioniert während des Ausführens bash
.
Grundsätzlich ~/.bashrc
handelt es sich um eine Datei, die Anweisungen enthält, die bei bash
jedem Start ausgeführt werden. Die Standard-Shell für alle neueren Versionen von Mac OS X lautet bash
, sodass sie jedes Mal ausgeführt wird, wenn Sie ein Terminal öffnen. bash
weiß jedoch nicht auf magische Weise, dass die Konfigurationsdateien beim Bearbeiten erneut gelesen werden müssen, sodass der Alias beim Hinzufügen nicht sofort funktioniert ~/.bashrc
. Was Sie tun , wenn Sie laufen bash
in Ihre bestehende Schale ist eine andere Instanz erstellen bash
(das wird die geänderte Konfigurationsdatei lesen, weil es beginnt nach oben). Beachten Sie, dass Ihre ursprüngliche Instanz von bash
noch vorhanden ist und hinter der bash
manuell ausgeführten Instanz ausgeführt wird . Wenn Sie die Shell schließen (mit demexit
Befehl) kehren Sie zu Ihrer ursprünglichen Shell zurück (wenn Sie sie schließen, erhalten Sie vom Terminal die Meldung "Prozess abgeschlossen").
Um auf Ihr Problem zurückzukommen: Ihr Alias funktioniert erst, wenn bash
die Konfiguration erneut gelesen wurde. Sie können dies tun, indem Sie bash
erneut starten (entweder indem Sie eine andere Shell in Ihrer vorhandenen Shell erstellen, indem Sie sie ausführen bash
, oder indem Sie Ihr Terminal schließen und öffnen) oder den source
Befehl verwenden, um bash
eine Datei erneut zu lesen. Also, nachdem Sie bearbeitet haben ~/.bashrc
, funktioniert der source ~/.bashrc
Alias, kein erneutes Starten bash
.
.bashrc
wird nicht jedes Mal gelesen, wenn bash gestartet wird.