Warum muss ich .bashrc jedes Mal als Quelle angeben, wenn ich das Terminal öffne, damit Aliase funktionieren? [Duplikat]

25

Ich habe diese Zeile in meine ~/.bashrcDatei eingefügt .

alias myserver='ssh [email protected]'

Wenn ich jedoch das Terminal öffne und laufe myserver, beschwert sich das Terminal darüber

-bash: myserver: command not found

Wenn ich jedoch meine .bashrc-Datei ( . .bashrc) als Quelle verwende, funktioniert der Alias.

Nichtsdestotrotz möchte ich die Datei nicht jedes Mal als Quelle verwenden, wenn ich das Terminal öffne, damit der Alias ​​funktioniert. Wie mache ich das möglich?

David Faux
quelle
3
Dieser Kommentar erklärt den Grund dafür. In dieser Frage erfahren Sie, wie Sie das Problem beheben können.
ughoavgfhw
Vielen Dank! Ich wusste nicht, dass beim Starten der Shell diese Dateien in der angegebenen Reihenfolge ausgeführt werden. In der Tat . .bashrcin .bash_profileWerke hinzufügen .
David Faux
@ughoavgfhw kannst / solltest du deinen Kommentar in eine Antwort ändern? Auf diese Weise kann es als Antwort markiert werden.
Soxman

Antworten:

25

Kurz gesagt, Sie platzieren Ihre Aliase in der falschen Datei .bashrc. Deshalb müssen Sie weiterhin source ausführen, damit die Aliase in allen neuen Anmeldeterminalinstanzen funktionieren.

Aus Chris Johnsens Kommentar unter Warum wird .bashrc nicht automatisch ausgeführt?

Standardmäßig startet Terminal die Shell über / usr / bin / login, wodurch die Shell zu einer Login-Shell wird. Auf jeder Plattform (nicht nur Mac OS X) verwendet bash .bashrc nicht für Login-Shells (nur / etc / profile und das erste von .bash_profile, .bash_login, .profile, das vorhanden und lesbar ist). Aus diesem Grund wird standardmäßig empfohlen, "source ~ / .bashrc in Ihr .bash_profile zu setzen".

Weitere Informationen finden Sie auf der Handbuchseite für bash:

man bash

Dann schauen Sie im Abschnitt INVOCATION nach.

MrDaniel
quelle
Muss ich neu starten, damit alles funktioniert? Weil ich source ~/.bashrczu meinem .bash_profil hinzugefügt habe, aber immer noch vor dem gleichen Problem stehe ...
Michiel
1
Nein, in den meisten Fällen müssen Sie nur ein neues Terminalfenster öffnen, damit die Änderungen wirksam werden. Die Änderungen werden nur im neu geöffneten Fenster wirksam.
MrDaniel
11

Sie können immer setzen

if [ -n "$BASH_VERSION" ] && [ -f $HOME/.bashrc ];then
    source $HOME/.bashrc
fi

in die datei ~/.profileoder ~/.bash_profileauf mac denke ich.

Oooor, du könntest einfach deine Sachen reinlegen .profileoder .bash_profile.

Dylan
quelle
Dies wird in der anderen Antwort vermerkt - warum sind Sie sich über diese Dinge nicht sicher?
user151019
Bitte lesen Sie diese sehr ähnliche Frage: apple.stackexchange.com/q/12993/22003 und fügen Sie dort etwaige Verbesserungen hinzu.
Dan
@ DanielAzuelos Warten; Soll ich die andere Seite kommentieren oder meine Antwort basierend auf der anderen Frage aktualisieren?
Dylan
@Mark Ich habe nur in einem sehr hypothetischen Sinne nachgedacht - wie wäre es, wenn jemandes Terminal-Prozess nicht wüsste, wie er .profile erzeugt? Ihr Terminal würde wahrscheinlich nicht von Anfang an starten, aber es ist immer noch möglich ... als würde jemand an seinem / usr / bin / login herumhacken oder so.
Dylan
→ Dylan: Bitte lies diese sehr ähnliche Frage: apple.stackexchange.com/q/12993/22003 und du wirst eine Antwort auf dein "Vielleicht?" Finden.
Dan