Helmuts Weblog

»Die Basis einer gesunden Ordnung ist ein großer Papierkorb.« – Kurt Tucholsky


Bash-Prompt umgestalten

Wenn ich auf einem Linux-System unterwegs bin und auf der Bash das aktuelle Verzeichnis wissen möchte/muss, mache ich das meist ganz klassisch mit pwd (print working directory).

Auf meinem Uberspace soll das aber zukünftig direkt im Prompt (also der Eingabeaufforderung) der Bash stehen. Das kann man mit wenigen Handgriffen an der Umgebungsvariable PS1 ändern.

PS1

Der aktuelle Zustand wird mit echo $PS1 ausgelesen. Auf einem frisch eingerichteten Uberspace 7 bekommt man folgende Ausgabe (der User hat in diesem Beispiel den html-Ordner über den symbolischen Link im Home-Verzeichnis betreten):

[username@host html]$echo $PS1
[\u@\h \W]\$

Angezeigt wird im Prompt also der angemeldete User, gefolgt von einem @-Zeichen, dem Hostnamen, einem Leerzeichen sowie dem aktuellen Verzeichnis und einem $-Zeichen. Das alles steht in eckigen Klammern.

Ich möchte aber nun, dass nicht nur zusätzlich der komplette Pfad angezeigt wird. Wenn ich schon mal dabei bin, ändere ich auch gleich noch ein paar andere Dinge. Insgesamt soll mein Prompt auf dem Server diese Form haben:

username@FQDN pfad $

Der Username, gefolgt von einem @, dem FQDN (fully qualified domain name), einem Leerzeichen, dem kompletten Pfad, einem weiteren Leerzeichen, dem $-Zeichen und schließlich einem zusätzlichen Leerzeichen. Die eckigen Klammern sollen ebenfalls verschwinden.

Folgendes muss hierfür in die PS1 eingetragen werden:

PS1='\u@\H \w \$ '

Das Ergebnis schaut im html-Verzeichnis dann so aus:

username@host.uberspace.de ~/html $ 

Oder, wenn man das html-Verzeichnis nicht über den symbolischen Link im Home-Verzeichnis betritt, sondern über die unterste Ebene des Systems betritt, eben so:

username@host.uberspace.de /var/www/virtual/username/html $ 

Eine Auflistung weiterer Variablen gibt es z.B. hier.

Das alles geht allerdings auch noch komplizierter. 😉

Mit Farben

Man kann den Prompt z.B. farblich gestalten. Die Form

username@host.uberspace.de:/var/www/virtual/username/html$

mit den Farben Grün und Hellblau würde sich so ganz gut machen:

PS1='\[\033[0;32m\]\u\[\e[m\]\[\033[0;32m\]@\[\e[m\]\[\033[0;32m\]\H\[\e[m\]:\[\033[1;34m\]\w\[\e[m\]\\$ '

Mir persönlich gefällt dieses Beispiel sogar noch besser als das weiter oben, also lasse ich es auch so. Ein paar Farben können ja nicht schaden. 👍

Man könnte den Prompt natürlich noch mehr umgestalten, etwa auch mit Hintergrundfarben, aber das wäre mir persönlich dann schon wieder zu unübersichtlich.

Änderungen dauerhaft nutzen

Die Änderungen an der Umgebungsvariablen PS1 gehen freilich verloren, wenn man sich neu im System einloggt.

Damit diese dauerhaft gespeichert werden, muss man einen Eintrag in der .bashrc im Home-Verzeichnis hinterlegen. Dieser könnte etwa so aussehen:

# Bash-Prompt
# Default auf diesem System war:
# [\u@\h \W]\$
PS1='\[\033[0;32m\]\u\[\e[m\]\[\033[0;32m\]@\[\e[m\]\[\033[0;32m\]\H\[\e[m\]:\[\033[1;34m\]\w\[\e[m\]\\$ '

Abschließend die .bashrc neu einlesen:

source ~/.bashrc

Alternativ könnte man sich natürlich auch einfach neu am Server anmelden.

Tags: #tech, #how-to, #linux, #software, #server, #uberspace, #opensource, #txt