Die Bash lässt sich in vielfältiger Weise konfigurieren und den persönlichen Vorlieben anpassen. Ein individueller Prompt kann die Übersichtlichkeit fördern, und auch die Ausgabe von “ls” wird mit Farben lesbarer.
Dieser Beitrag widmet sich der individuellen Gestaltung des so genannten Prompts und der farblichen Gestaltung der Anzeige von ls. Es geht nicht darum, die Terminal-Anwendung mit farbigen Schriften oder Hintergründen zu versehen: Das ist über die Programmeinstellungen möglich, bei KDEs Konsole z. B. über Einstellungen / Profile verwalten. Wer den Prompt mit individuellen Farben konfiguriert, findet sein Farb-Setup in jedem Terminal-Programm wieder, auch bei der Anmeldung im Textmodus (ohne grafische Oberfläche).
Konfigurationsdateien
Die die Bash zu konfigurieren, setzen Sie Umgebungsvariablen global in der Datei /etc/profile oder wahlweise für Ihr Benutzerkonto in $HOME/.bashrc. In der Regel sind hier bereits eine Reihe von Umgebungsvariablen voreingestellt, wie etwa PATH oder PS1 für den Prompt. Das Experimentieren mit Umgebungsvariablen ist relativ leicht: Kommentieren Sie die vorhandenen Einstellungen (durch Voranstellen einer Raute “#”) aus, so dass sie sich jederzeit wieder verfügbar machen lassen. Es gibt noch zahlreiche weitere Konfigurationsdateien, deren Verwendung davon abhängt, wie Sie eine Shell starten; eine detaillierte Beschreibung führt an dieser Stelle aber zu weit.
Prompt individualisieren
Zum Individualisieren des Shell-Prompts können Sie mit der Variablen PS1 experimentieren. Deren aktuellen Wert zeigen Sie mit echo $PS1 an. Als minimalistisches Beispiel können Sie
PS1='> '
eingeben, danach besteht der Prompt nur noch aus dem “>”-Zeichen. Sie können Ausgaben von beliebigen Bash-Befehlen in den Prompt integrieren, z. B. über
PS1='$(pwd) > '
womit der Minimal-Prompt von oben stets den vollen aktuellen Pfad mit anzeigt. Ein weiteres Beispiel in der Form Uhrzeit user@rechner verzeichnis > wird so gesetzt:
PS1='\A \u@\h \W >'
Bei \A, \W und anderen Zeichenkombinationen, die mit einem Backslash beginnen, handelt es sich um so genannte Escape-Sequenzen, welche dazu führen, dass die Bash im Prompt nicht einfach den Backslash ausgibt, sondern besondere Inhalte, wie eben die Uhrzeit oder den Benutzernamen.
Befehle und Standard-Escape-Zeichen lassen sich übrigens auch beliebig komplex schachteln und außerdem um ganz normale Zeichen ergänzen, so dass sich jeder beliebige Text als Prompt verwenden lässt.
Prompt mit Farben
Neben dem individuellen Gestalten des Prompts lässt sich die Variable PS1 zudem mit individuellen Farbkodierungen bestücken, wofür auch Escape-Sequenzen nötig sind. Farben können zu einer übersichtlicheren Darstellung beitragen. Mit
PS1="\[\033[0;32;40m\u@\h:\w\$ \]"
wählen Sie die Vordergrundfarbe grün (32) und die Hintergrundfarbe schwarz (40). Die Null (0) steht für “normale” Schrift, 1 ergäbe “fett”.
Das Einklammern von Escape-Squenzen mit eckigen Klammer verhindert mögliche Interpretationsfehler der Shell. Die Angabe \033 ist die Oktaldarstellung der Zahl 27, laut ASCII-Tabelle verbirgt sich dahinter das Zeichen “Escape”: Das Zeichen leitet die Farb-Escape-Sequenz ein.
Jede Farbdefinition bleibt gültig, bis eine neue erfolgt. In der zuletzt angegebenen Farbe liest die Shell anschließend auch neue Kommandos ein. Für die Vorder- und Hintergrund stehen jeweils die gleich acht Farben zur Verfügung. Schwarz, Rot, Grün, Gelb, Blau, Magenta, Cyan und Weiß haben die Werte 30 bis 37; für die Hintergrundfarben sind es entsprechend 40 bis 47.
Damit die Schrift nach dem Prompt nicht ebenfalls grün ist, hängt man am Ende die Escape-Sequenz \033[0m an. Ein Beispiel dafür ist:
PS1="\[\033[0;37;44m\u@\033[0;32;40m\h:\033[0;33;41m\w$\033[0m\] "
Damit erscheint der Benutzername in Weiß auf Blau, der Rechnername in Grün auf Schwarz und das Arbeitsverzeichnis in Gelb auf Rot, was zugegebenermaßen etwas übertrieben ist, aber das Prinzip erläutert. Die Null (0) nach der ersten Escape-Sequenz sorgt wie beschrieben für die Voreinstellung der Schrift des Shell-Promptes. Neben 0 und 1 für “normal” und “fett” stehen außerdem die Schrifteigenschaften 22, 4, 24, 5, 25, 7, 27 für nicht fett, unterstrichen, nicht unterstrichen, blinkend, nicht blinkend, invers und nicht invers zur Verfügung.
Farbige Dateien und Verzeichnisse
Wenn Sie mit ls den Inhalt eines Verzeichnisses auflisten, erscheinen einige Einträge farbig. Die Farbzuordnungen der einzelnen Dateitypen haben nichts mit der PS1-Variable zu tun, sondern sind in der Datei /etc/dircolors gespeichert (falls diese existiert).
Aus den Einstellungen in der Datei dircolors erzeugt das Kommando
eval $(dircolors -b /etc/dircolors)
eine Belegung der Variablen LS_COLORS, und diese wertet das Tool ls aus, wenn Sie es mit der Option --color aufrufen.
Umgekehrt erzeugen Sie aus der aktuellen Farbliste für ls mit dem Kommando
dircolors -p > ~/.dircolors
eine Datei in Ihrem Home-Verzeichnis, welche die Farbzuordnungen enthält. Wenn Sie die Einstellungen darin bearbeitet haben (Abbildung 1), können Sie anschließend
eval $(dircolors -b ~/.dircolors)
eingeben, um die Änderungen wirksam zu machen. Geben Sie nur dircolors ein, erhalten Sie aus Ausgabe die notwendigen Befehle, welche die Variable LS_COLORS aktualisieren (Abbildung 2).

Abbildung 1: In der Konfigurationsdatei “~/.dircolors” können Sie für jeden beliebigen Dateityp ein individuelles Farbattribut setzen.
Ein Eintrag in der Datei .dircolors könnte exemplarisch so aussehen:
DIR 01;34 #DIRECTORY
Die Farbcodes für Vorder- und Hintergrundfarben sind dieselben wie oben für die Prompt-Darstellung. Der Eintrag DIR im Beispiel steht für ein Verzeichnis; der erste Wert 01 kennzeichnet wieder das Schriftattribut, eine Hintergrundfarbe ist hier nicht gesetzt. Zum Ausprobieren der Änderungen starten Sie die Bash neu oder aktualisieren von Hand die Umgebungsvariable LS_COLORS mit eval $(dircolors -b ~/.dircolors) (siehe oben). Eine farbige ls-Ausgabe sehen Sie in Abbildung 3.
Fazit
Das farbliche Aufpeppen der Bash ist kein Hexenwerk und stellt ein riesiges Experimentierfeld dar. Wenn Sie die Konfigurationsdateien vorher sichern oder die Standardwerte nur auskommentieren, kann es auch keine Probleme geben.


