Shell-Startdateien
Beim Start liest die Shell automatisch Konfigurationsdateien ein — welche davon, hängt vom Shell-Modus ab: Login-Shell oder interaktive Shell ohne Login.
Login-Shell vs. interaktive Shell
Abschnitt betitelt „Login-Shell vs. interaktive Shell“Konsolen-Anmeldung / SSH │ ▼ Login-Shell liest: /etc/profile → ~/.bash_profile (oder ~/.profile) │ │ (meist: source ~/.bashrc) ▼ interaktive Shell liest: ~/.bashrcIm Terminal-Emulator (GNOME Terminal, Konsole, iTerm …) wird meist direkt eine
interaktive Shell ohne Login gestartet — also nur ~/.bashrc, kein ~/.profile.
Die Dateien im Überblick
Abschnitt betitelt „Die Dateien im Überblick“/etc/profile
Abschnitt betitelt „/etc/profile“Systemweite Konfiguration für alle Login-Shells. Wird von root verwaltet,
Benutzer können sie nicht ändern. Lädt üblicherweise alle Dateien in /etc/profile.d/*.sh.
~/.bash_profile
Abschnitt betitelt „~/.bash_profile“Benutzerspezifische Konfiguration für Login-Shells. Typischer Inhalt:
Umgebungsvariablen, PATH-Erweiterungen, und das Einlesen von ~/.bashrc:
export PATH="$HOME/.local/bin:$PATH"export EDITOR=nano
# ~/.bashrc einlesen, falls vorhandenif [ -f ~/.bashrc ]; then source ~/.bashrcfi~/.profile
Abschnitt betitelt „~/.profile“Wie ~/.bash_profile, aber shell-agnostisch — gültig für alle Login-Shells
(bash, sh, dash, zsh ohne eigene Konfiguration). Kein bash-spezifischer Code hier.
Unter Debian/Ubuntu ist ~/.bash_profile oft gar nicht vorhanden — stattdessen wird
~/.profile verwendet, das auch ~/.bashrc einliest.
~/.bashrc
Abschnitt betitelt „~/.bashrc“Die wichtigste Konfigurationsdatei für den täglichen Gebrauch. Wird bei jeder interaktiven Shell-Sitzung geladen. Typischer Inhalt:
# Prompt anpassenPS1='\u@\h:\w\$ '
# Aliasesalias ll='ls -lh'alias la='ls -lhA'alias ..='cd ..'alias grep='grep --color=auto'
# Umgebungsvariablenexport EDITOR=vimexport HISTSIZE=10000export HISTFILESIZE=20000
# Doppelte Einträge in der History vermeidenexport HISTCONTROL=ignoredups:erasedups
# PATH erweiternexport PATH="$HOME/.local/bin:$PATH"
# Bash-Completion laden (falls nicht automatisch)if [ -f /etc/bash_completion ]; then source /etc/bash_completionfi~/.bash_logout
Abschnitt betitelt „~/.bash_logout“Wird beim Beenden einer Login-Shell ausgeführt. Selten genutzt — mögliche Anwendungsfälle: Terminal leeren, temporäre Dateien aufräumen.
clearReihenfolge beim Start
Abschnitt betitelt „Reihenfolge beim Start“Login-Shell:
/etc/profile~/.bash_profileoder~/.bash_loginoder~/.profile(erste gefundene)- (in
~/.bash_profiletypischerweise:source ~/.bashrc)
Interaktive Shell (kein Login):
/etc/bash.bashrc(systemweit, nicht alle Distributionen)~/.bashrc
Skript (nicht-interaktiv):
- Keine der obigen Dateien — nur Variablen aus der Umgebung des Elternprozesses
Änderungen sofort übernehmen
Abschnitt betitelt „Änderungen sofort übernehmen“Änderungen an Startdateien gelten erst für neue Shell-Sitzungen. Um sie in der aktuellen Sitzung zu aktivieren:
source ~/.bashrc # ~/.bashrc neu einlesen. ~/.bashrc # gleichbedeutend (POSIX-Schreibweise)Typische Aufteilung
Abschnitt betitelt „Typische Aufteilung“| Was | Wohin |
|---|---|
Umgebungsvariablen (export) | ~/.bash_profile / ~/.profile |
| Aliases | ~/.bashrc |
| Funktionen | ~/.bashrc |
Prompt (PS1) | ~/.bashrc |
| PATH-Erweiterungen | ~/.bash_profile (damit auch in GUI-Apps verfügbar) |
Shell-Optionen (shopt, set) | ~/.bashrc |