Um einen Alias für das Terminal in OS X zu erstellen, können Sie entweder die Aliase in .bash_profile
oder einfügen .bashrc
. Was ist der Unterschied zwischen den beiden und warum sollte ich Aliase in eines und nicht in das andere einfügen?
terminal
command-line
bash
Daviesgeek
quelle
quelle
brew install bash
und verwenden Sie iTerm2, können Sie festlegenprofile -> command
,/usr/local/bin/bash
welche.bashrc
standardmäßig nach geladen wird.bash_profile
. Dies gibt Ihnen auch Bash 4 Goodies ...Antworten:
.bash_profile
wird für Anmeldeshells ausgeführt, während.bashrc
für interaktive Shells ohne Anmeldung ausgeführt wird.Wenn Sie sich über die Konsole anmelden (Benutzername und Kennwort eingeben), entweder am Computer oder remote über ssh:
.bash_profile
wird ausgeführt, um Ihre Shell vor der ersten Eingabeaufforderung zu konfigurieren.Wenn Sie sich jedoch bereits bei Ihrem Computer angemeldet haben und ein neues Terminalfenster (xterm) öffnen,
.bashrc
wird dies vor der Eingabeaufforderung des Fensters ausgeführt..bashrc
wird auch ausgeführt, wenn Sie eine neue Bash-Instanz durch Eingeben/bin/bash
eines Terminals starten .Unter OS X führt Terminal standardmäßig jedes Mal eine Anmeldeshell aus. Dies unterscheidet sich also ein wenig von den meisten anderen Systemen. Sie können dies jedoch in den Voreinstellungen konfigurieren.
quelle
On OS X, Terminal by default runs a login shell every time
- Ich war schon immer so verwirrt, als ich das nicht merkte. Tolle Infos!.zprofile
jedes Mal ausgeführt wird.X11 wird sich Ihre ansehen,
.bashrc
während sich ein "normales" Terminal umschaut.bash_profile
Wenn Sie jedoch Folgendes hinzufügen
.bash_profile
, können Sie alles in Ihre.bashrc
Datei verschieben, um alles an einer Stelle statt an zwei zu konsolidieren:quelle
cd ~ ; ln -s .bashrc .bash_profile
.~/.bash_profile
). Oft ist es auch notwendig, Dinge auf jeder Shell-Ebene inkrementell zu definieren (~/.bashrc
). Es ist nicht die beste Idee, diese Freiheit zu unterdrücken.~/.bash_profile
für jedes neue Fenster / jeden neuen Tab eine Quelle , sodass es für Terminal keine Möglichkeit gibt, die beiden zu trennen..bash_profile
kann nie wieder im untergeordneten Prozess bezogen werden. Jede Ebene von verschachtelten Bash Quellen.bashrc
, also wenn Sie so etwas wie setzenexport A=a:$A
in.bashrc
Sie$A
bekommt mehr in verschachtelten Bash. Normalerweise belasse ich Umgebungsvariablen im Profil und Aliase in RC.Für macOS muss folgender Code eingegeben werden
.bash_profile
, um alles zu konsolidieren.bashrc
:Dies ist spezifischer für Mac-Terminalbenutzer.
quelle
TLDR; Verwenden Sie
.bash_profile
für Ihre Aliase.Das Zusammenspiel der verschiedenen Initialisierungsdateien ist etwas komplizierter, und in OSX gibt es einige wichtige Sonderfälle. Hier sind die Highlights:
.bash_profile
wird aufgerufen. Also der TLDR Hinweis oben..bashrc
Dies ist auch eine Option, die jedoch jedes Mal aufgerufen wird, wenn Sie eine Subshell erstellen (dh aufrufenbash
). Dies kann zu Ineffizienz führen, wenn Sie eine Variable in der Subshell aktualisieren (z. B.PATH=/bin/foo:$PATH
)..bashrc
von.bash_profile
denen aus aufgerufen wird, sind weit verbreitet. Ich empfehle das nicht, aber es ist eine Präferenz.quelle
.bash_profile
von Aliasen genau so kompliziert? Bei den Elementen, die Sie nur teilweise auflisten, handelt es sich überhaupt um Aliase. Können Sie also anstelle einiger Aufzählungszeichen einen Weg vorschlagen, um es unter diesen Umständen einfacher zu machen , warum es kompliziert zu sein scheint?