Login
Newsletter
Sa, 1. April 2000, 11:42

Farbiger Bash-Prompt

Der Bash-Prompt muss nicht immer einfarbig erscheinen.

Der Bash-Prompt kann bekanntlich angepasst werden. Oft ist es standardmäßig z.B. "\u@\h:\w\$ ", wobei die Bash \u durch den Benutzernamen, \h durch den Hostnamen, \w durch das Arbeitsverzeichnis und \$ durch $ (wenn die UID nicht 0 ist) oder # (wenn die UID 0 ist) ersetzt. Die Form für den aktuellen Prompt steht in der Umgebungsvariablen PS1.

Den Bash-Prompt mit Farbe auszustatten ergibt durchaus Sinn, denn es wird dadurch übersichtlicher, sofern man es mit den Farben nicht übertreibt. Die Methode, direkt Terminal-Kontrollsequenzen anzugeben (die durch \033[ eingeleitet werden und auf m enden) funktioniert leider nicht. Wenn man den Prompt z.B. mit

PS1="\033[0;32m\u\033[0m@\
    \033[0;32m\h\033[0m:\
    \033[1;33m\w\033[0m\$ "

setzt (Kontrollsequenzen sind hier zur besseren Übersicht fett dargestellt), wird ein äußerst bizarrer Zeilenumbruch verwendet, da die Bash nicht weiß, dass es sich bei den meisten Zeichen hier um Kontrollsequenzen handelt und der Ort für den Umbruch falsch berechnet wird.

Die Lösung dafür ist, alle Kontrollsequenzen in \[ und \] einzuschließen. Nur auf diese Weise kann man einen farbigen Prompt sinnvoll verwenden. Ein Prompt könnte dann z.B. (in der ~/.bashrc) so gesetzt werden (die Klammern sind fett hervorgehoben):

PS1="\[\033[0;36m\]\t\[\033[1;35m\]^\
    \[\033[0;32m\]\u\[\033[1;34m\]@\[\033[0;32m\]\
    \h\[\033[1;35m\]:\[\033[1;33m\]\w\[\033[0m\]\
    \[\033[1;34m\]$\[\033[0m\] "

Eine Erklärung vieler weiterer Möglichkeiten und eine Liste aller Farben finden Sie im Bash-Prompt-HOWTO.

Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten