Wer oft an einem Terminal arbeitet, wird schnell feststellen, dass der Prompt mit der Verzeichnistiefe in welcher man arbeitet sehr schnell unuebersichtlich wird.
Das liegt daran, dass die meisten Distributionen eine solche Vorkonfiguration waehlen. Es folgt ein Beispiel:
Code: Alles auswählen
user@host /home/user/music/mp3/grave_digger/tunes_of_war :~ $
Die bash stellt eine umfangreiche Variablensammlung bereit, um das Verhalten (beispielsweise das Aussehen des Prompt) zu konfigurieren.
Dazu kennt die bash insbesondere die folgenden Variablen:
PS1 : Dient zur Darstellung des Prompt, wie er nach dem Ausfuehren eines Befehles (Befehlsfolge) als Eingabeaufforderung erscheint.
PS2 : Ist ein Befehl grammatikalisch betrachtet noch nicht fertig, und wird ein Zeilenumbruch mittels ENTER ausgefuehrt, wird diese Variable zur Anzeige benutzt. Beispielsweise das Zeichen '>':
Code: Alles auswählen
sed -e 's/linux/Gnu\/&/
> g'
PS4 : interessante Verwendung im Zusammenhang mit dem Tracing Modus der bash
Fuer uns interessant ist an dieser Stelle der Inhalt der Variablen PS1, sie definiert das Aussehen der Kommandozeile.
Sie wird meist in der Datei /home/user/.bashrc (oder abgekuerzt ~/.bashrc) definiert.
Das folgende Beispiel zeigt zuerst die ausfuehrliche Variante, mit Angabe des gesamten Pfades, und dann wie man den Pfad nur noch mit dem letzten Verzeichnis aus ${PWD} darstellt:
Code: Alles auswählen
PS1='\[\033[01;32m\]\u@\h\[\033[01;34m\] \w \$\[\033[00m\] '
Fuehrt zu:
user@host ~/music/mp3/grave_digger/tunes_of_war $
Code: Alles auswählen
PS1='\[\033[01;32m\]\u@\h\[\033[01;34m\] \W \$\[\033[00m\] '
Fuehrt zu:
user@host tunes_of_war $
Neben den PSx Variablen kennt die Bash noch die Umgebungsvariable PROMPT_COMMAND.
Diese wird jedesmal vor der Ausgabe von PS1 ausgefuehrt. Sie dient dazu, auf Zustandsabhaengige Variablen (im allgemeinen) zu reagieren. Beispielsweise kann beim Betreten eines Unterverzeichnisses damit jedesmal ein ls Kommando ausgegeben werden, oder andere nuetzliche Spielereien (allgemein beispielsweise die Ausfuehrung eines Scripts veranlassen).
In diesem Beispiel moechte ich den oben aufgetretenen Nebeneffekt, dass man vielleicht nicht mehr weiss wo genau man sich nun im Dateisystem befindet (man hat ja nur noch den letzten Teil angezeigt) ausgleichen.
Die meisten Terminals benutzen den Inhalt dieser Variablen, um in der Fensterleiste den Titel des Fensters damit zu setzen.
Es bietet sich also an, hier den gesamten Pfad auszugeben, so dass man zwar einen schlanken Prompt hat, aber dennoch die Information, wo genau man sich befindet aus der Titelleiste des Terminalfensters ablesen kann.
Code: Alles auswählen
PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME}:${PWD/$HOME/~}\033\\"'
Code: Alles auswählen
user@host ~/music/mp3/grave_digger/tunes_of_war
Abschliessend moechte ich den Leser ermuntern, sich selber mit den Variablen der Bash zu befassen. Hierfuer eignen sich die Google Keywords:
Code: Alles auswählen
intitle:bash variable HOWTO
Marco