Bash-Kommandozeile personalisieren

Lesezeit
1 Minute
Bis jetzt gelesen

Bash-Kommandozeile personalisieren

02.06.2026 - 07:00
Veröffentlicht in:

Der Standard-Prompt gibt sich karg – Benutzername, Hostname, Verzeichnis, fertig. Wer ihn gezielt umbaut, bekommt eine Shell, die auf einen Blick mitteilt, wo der gerade arbeitet, in welchem Git-Zweig er steckt und ob der letzte Befehl erfolgreich war. Wir zeigen, wie Sie mit wenigen Schritten Ihre Bash aufbohren.

Grundlage ist die Variable PS1, die Bash vor jeder Eingabeaufforderung neu auswertet. Escape-Sequenzen wie \u <Benutzername>, \h <Hostname>, \w <aktuelles Verzeichnis> und \$ <Prompt-Zeichen> – # für root, $ für alle anderen – bilden das Grundgerüst. ANSI-Farbcodes wie "\e[32m" für Grün oder "\e[31m" für Rot schärfen die visuelle Struktur. Entscheidend dabei: Alle Farbcodes gehören in \[ und \]. Fehlen diese Klammern, rechnet Bash die unsichtbaren Steuerzeichen zur sichtbaren Zeilenlänge – bei langen Befehlen springt der Cursor dann an die falsche Position.

Besonders nützlich sind dynamische Elemente. Den aktuellen Git-Zweig liefert eine kurze Funktion in der "~/.bashrc":

git_branch() { git branch 2>/dev/null | grep '^\*' | cut -d' ' -f2; }

Im PS1 binden Sie diese per $(git_branch) ein. Beim Exit-Code ist Timing entscheidend: $? gilt nur unmittelbar nach dem abgeschlossenen Befehl. Deshalb eignet sich PROMPT_COMMAND, das Bash vor jeder PS1-Auswertung ausführt – ideal, um den Rückgabewert in einer Hilfsvariable zu sichern und ihn je nach Ergebnis grün oder rot einzufärben.

Neue PS1-Definitionen testen Sie am besten zuerst in der laufenden Session: export PS1="..." wirkt sofort, ohne etwas dauerhaft zu verändern. Erst wenn der Prompt wie gewünscht funktioniert, kommt die Zeile in die "~/.bashrc" – anschließend aktiviert source ~/.bashrc die Änderung in der aktuellen Session. Wer lieber auf eine fertige Lösung setzt, findet mit Starship (starship.rs) einen schlanken, in Rust geschriebenen Prompt-Renderer, der sich per Konfigurationsdatei flexibel anpassen lässt und Bash, Zsh sowie Fish gleichermaßen unterstützt.