Wenn Sie viel Zeit auf der Befehlszeile verbringen, möchten Sie wahrscheinlich Ihre Shell-Umgebung anpassen. Dies kann das Erstellen von Aliasnamen oder das Hinzufügen eines neuen Verzeichnisses zum $PATH
bedeuten , oder das Aussehen des Shell-Prompts ändern.
Möglicherweise sind Sie auf einige Tutorials gestoßen, in denen Sie sagen, dass Sie Ihre Konfiguration entweder in .bashrc
einfügen sollen , .bash_profile
oder eine andere Konfigurationsdatei, die von der Bash-Shell gelesen und ausgeführt wird.
In diesem Artikel werden wir über die Bash-Startdateien und den Unterschied zwischen .bashrc
sprechen und .bash_profile
Dateien.
Interaktive Login- und Nicht-Login-Shell #
Beim Aufruf liest Bash Befehle aus einer Reihe von Startdateien und führt sie aus. Welche Dateien gelesen werden, hängt davon ab, ob die Shell als interaktive Anmelde- oder Nicht-Anmelde-Shell aufgerufen wird.
Eine Shell kann interaktiv oder nicht interaktiv sein.
Einfach ausgedrückt ist eine interaktive Shell eine Shell, die auf dem Terminal eines Benutzers liest und schreibt, während eine nicht interaktive Shell eine Shell ist, die nicht mit einem Terminal verbunden ist, wie zum Beispiel beim Ausführen eines Skripts.
Eine interaktive Shell kann entweder Login- oder Nicht-Login-Shell sein.
Eine Login-Shell wird aufgerufen, wenn sich ein Benutzer entweder remote über ssh oder lokal am Terminal anmeldet oder wenn Bash mit --login
gestartet wird Möglichkeit. Eine interaktive Nicht-Login-Shell wird von der Login-Shell aufgerufen, beispielsweise wenn Sie bash
eingeben in der Shell-Eingabeaufforderung oder beim Öffnen eines neuen Gnome-Terminal-Tabs.
Bash-Startdateien #
Beim Aufruf als interaktive Login-Shell sucht Bash nach /etc/profile
Datei, und wenn die Datei vorhanden ist, werden die in der Datei aufgelisteten Befehle ausgeführt. Dann sucht Bash nach ~/.bash_profile
, ~/.bash_login
, und ~/.profile
Dateien in der aufgelisteten Reihenfolge und führt Befehle von der ersten gefundenen lesbaren Datei aus.
Wenn Bash als interaktive Non-Login-Shell aufgerufen wird, liest und führt es Befehle aus ~/.bashrc
aus , wenn diese Datei existiert und lesbar ist.
Unterschied zwischen .bashrc und .bash_profile #
.bash_profile
wird gelesen und ausgeführt, wenn Bash als interaktive Login-Shell aufgerufen wird, während .bashrc
wird für eine interaktive Nicht-Login-Shell ausgeführt.
Verwenden Sie .bash_profile
um Befehle auszuführen, die nur einmal ausgeführt werden sollen, wie z. B. das Anpassen von $PATH
Umgebungsvariable.
Fügen Sie die Befehle, die jedes Mal ausgeführt werden sollen, wenn Sie eine neue Shell starten, in die .bashrc
ein Datei. Dazu gehören Ihre Aliase und Funktionen, benutzerdefinierte Eingabeaufforderungen, Verlaufsanpassungen usw.
Normalerweise ~/.bash_profile
enthält Zeilen wie darunter die Quelle .bashrc
Datei. Das bedeutet, dass jedes Mal, wenn Sie sich am Terminal anmelden, beide Dateien gelesen und ausgeführt werden.
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
Die meisten Linux-Distributionen verwenden ~/.profile
statt ~/.bash_profile
. Der ~/.profile
Datei wird von allen Shells gelesen, während ~/.bash_profile
nur von Bash.
Wenn auf Ihrem System keine Startdatei vorhanden ist, können Sie sie erstellen.
Schlussfolgerung #
.bash_profile
und .bashrc
sind Dateien, die Shell-Befehle enthalten, die ausgeführt werden, wenn Bash aufgerufen wird. .bash_profile
wird auf interaktiven Login-Shells gelesen und ausgeführt, während .bashrc
auf Nicht-Login-Shells.
Weitere Informationen zu Bash-Startdateien finden Sie im Bash-Handbuch.
Wenn Sie Fragen oder Feedback haben, können Sie gerne einen Kommentar hinterlassen.