Wenn du viel Zeit auf der Kommandozeile verbringst, möchtest du möglicherweise deine Shell-Umgebung individuell anpassen. Das beinhaltet das Erstellen von Aliassen, das Hinzufügen neuer Verzeichnisse zum $PATH
und das Anpassen des Aussehens deiner Shell-Eingabeaufforderung.
Du bist möglicherweise auf einige Anleitungen gestoßen, die empfehlen, deine Konfiguration entweder in der Datei .bashrc
, .bash_profile
oder einer anderen konfigurationsbezogenen Datei zu hinterlegen, die von der Bash-Shell gelesen und ausgeführt wird.
In diesem Artikel werden wir über die Startdateien der Bash sprechen und den Unterschied zwischen den Dateien .bashrc
und .bash_profile
erläutern.
Interaktive Login- und Nicht-Login-Shell
Die Bash liest beim Start Befehle aus einer Reihe von Startdateien und führt sie aus. Welche Dateien genau gelesen werden, hängt davon ab, ob die Shell als interaktive Login- oder Nicht-Login-Shell aufgerufen wird.
Eine Shell kann entweder interaktiv oder nicht interaktiv sein.
Interaktiv bedeutet, dass die Shell auf dem Terminal des Benutzers liest und schreibt. Nicht interaktiv bedeutet, dass die Shell nicht direkt mit einem Terminal verbunden ist, z.B. wenn sie ein Skript ausführt.
Die interaktive Shell kann entweder eine Login- oder eine Nicht-Login-Shell sein.
Die Login-Shell wird aufgerufen, wenn sich ein Benutzer entweder per SSH oder lokal am Terminal anmeldet oder wenn die Bash mit der Option --login
gestartet wird. Die interaktive Nicht-Login-Shell wird von der Login-Shell aus aufgerufen, z.B. wenn du bash
in der Shell-Eingabeaufforderung eingibst oder wenn du einen neuen Gnome-Terminal-Tab öffnest.
Bash Startup-Dateien
Wenn die Bash als interaktive Anmeldeshell aufgerufen wird, sucht sie nach der Datei /etc/profile
und führt, falls vorhanden, die darin enthaltenen Befehle aus. Danach sucht die Bash nach den Dateien ~/.bash_profile
, ~/.bash_login
und ~/.profile
in dieser Reihenfolge und führt die Befehle aus der ersten lesbaren Datei aus.
Wenn die Bash als interaktive Nicht-Login-Shell aufgerufen wird, liest sie Befehle aus der Datei ~/.bashrc
und führt sie aus, sofern diese Datei existiert und lesbar ist.
Unterschied zwischen .bashrc und .bash_profile
.bash_profile
wird gelesen und ausgeführt, wenn die Bash als interaktive Anmeldeshell aufgerufen wird, während .bashrc
für eine interaktive Nicht-Anmeldeshell ausgeführt wird.
Du kannst .bash_profile
verwenden, um Befehle auszuführen, die nur einmal ausgeführt werden sollen, wie zum Beispiel die Anpassung der $PATH
Umgebungsvariable.
In der Datei .bashrc
legst du die Befehle ab, die jedes Mal ausgeführt werden sollen, wenn du eine neue Shell startest. Dazu gehören deine Aliasse, Funktionen, benutzerdefinierte Prompts, History-Anpassungen und so weiter.
Normalerweise enthält die Datei ~/.bash_profile
Zeilen wie die folgenden, um den Inhalt der .bashrc
Datei einzubinden. Dadurch werden beide Dateien jedes Mal, wenn du dich am Terminal anmeldest, gelesen und ausgeführt.
if [ -f ~/.bashrc ]; then
. ~/.bashrc
Die meisten Linux-Distributionen verwenden ~/.profile
anstelle von ~/.bash_profile
. Die Datei ~/.profile
wird von allen Shells gelesen, während ~/.bash_profile
ausschließlich von der Bash gelesen wird.
Falls eine Startdatei auf deinem System fehlt, kannst du sie einfach erstellen.
Abschluss
.bash_profile
und .bashrc
sind Dateien mit Shell-Befehlen, die beim Start der Bash ausgeführt werden. .bash_profile
wird auf interaktiven Login-Shells gelesen und ausgeführt, während .bashrc
auf Nicht-Login-Shells ausgeführt wird.
Weitere Informationen zu den Bash-Startdateien findest du im Bash-Handbuch.
Wenn du Fragen oder Feedback hast, hinterlasse gerne einen Kommentar.