Under Construction

Initialisierungs-Dateien der bash

Zunächst schauen wir uns an, welche Initialisierungs-Dateien die bash verwendet. Schließlich muss die Konfiguration ja von irgendwoher eingelesen werden. Da in den nachfolgenden Kapiteln die bash an persönliche Bedürfnisse angepasst werden soll, benötigt man die Information wo die Anpassungen eingetragen werden sollten.

Wenn die bash als Login-Shell gestartet wird, werden zuerst die Kommandos aus der systemweiten Datei /etc/profile gelesen und ausgeführt. Danach wird überprüft welche der Dateien ~/.bash_profile, ~/.bash_login bzw. ~/.profile vorhanden ist (in dieser Reihenfolge). Die Kommandos der ersten gefundenen Datei werden gelesen und ausgeführt. Das heißt insbesondere, das eine vorhandene Datei ~/.bash_login oder ~/.profile nicht gelesen wird (und damit auch nicht ausgeführt), wenn es eine ~/.bash_profile gibt!

Wird eine Login-Shell beendet, und ist die Datei ~/.bash_logout vorhanden und lesbar, dann werden die Kommandos aus ~/.bash_logout ausgeführt.

Wird eine bash als interaktive Shell, aber nicht als Login-Shell, gestartet, dann wird die Datei ~/.bashrc gelesen und ausgeführt, wenn sie existiert.

/etc/profile

Die systemweite Initialisierungs-Datei für Login-Shells.

~/.bash_profile

Die benutzerspezifische Initialisierungs-Datei für Login-Shells.

~/.bash_login

Die benutzerspezifische Initialisierungs-Datei für Login-Shells, falls ~/.bash_profile nicht vorhanden ist.

~/.profile

Die benutzerspezifische Initialisierungs-Datei für Login-Shells, falls ~/.bash_profile und ~/.bash_login nicht vorhanden ist.

~/.bashrc

Die benutzerspezifische Initialisierungs-Datei für interaktive Shells (nicht Login-Shell)

~/.bash_logout

Benutzerspezifische Datei für Aufräumarbeiten beim Beenden einer Login-Shell.

Die Dateien /etc/profile und ~/.profile werden auch von anderen Shells (z.B. ksh) verwendet und sollten daher keine bash-spezifischen Konfigurationen enthalten.

In den meisten Fällen dürften die Anpassungen benutzerspezifisch sein. Wir werden hierfür jeweils ~/.bash_profile (Login-Shells) und ~/.bashrc verwenden. Um die Konfiguration nicht in beide Dateien eintragen zu müssen, für Login-Shells und interaktive (nicht Login) Shells, verwenden wir die folgenden Zeilen in ~/.bash_profile:

# include user-specific startup file .bashrc for interactive non-login shells
[ -f ~/.bashrc ] && . ~/.bashrc

Damit liest eine Login-Shell auch die Datei ~/.bashrc und führt die enthaltenen Kommandos aus. Änderungen werden wir daher in den meisten Fällen nur in der Datei ~/.bashrc vornehmen, außer es geht um eine Konfiguration die nur für eine Login-Shell gültig sein soll.