Linux - Anleitung Eingabeprompt editieren (.bashrc)
Die einen schwören drauf und halten sie für unverzichtlich, die anderen wiederum halten sie als lästiges Übel des Linux-Betriebssystems: die Shell (bzw. Konsole). Letztendlich wird niemand, der Linux als Betriebssystem einsetzt, es vermeiden können, mit der Shell bestimmte administrative Aufgaben zu erledigen und wer sich erst einmal mit der Shell anvertraut hat, der wird merken, dass die Administration mittels der Konsole in vielen Fällen bequemer, schneller und einfacher ist.
Wer viel mit der Shell arbeitet, der sollte dafür sorgen, dass die Darstellung in der Shell möglichst übersichtlich ist, denn in der Standard-Konfiguration ist diese nämlich monoton und inhaltslos, was bei längerem Arbeiten sehr anstrengend werden kann. Der Anwender hat aber die Möglichkeit, mithilfe von Farben, Systemangaben oder Schriftangaben Inhalte strukturiert und übersichtlich darzustellen.
Die Konfigurationsdatei "bashrc"
Eine Möglichkeit, die Shell mit nützlichen Informationen und Formatierungen zu erweitern, ist der Eingabeprompt. Damit ist der Text gemeint, der vor der vom User erwarteten Eingabe steht. Standardmäßig sieht dieser so aus:
bash-2.04$
Das ist natürlich wenig aussagekräftig, denn es werden weder Informationen über den Rechner, den angemeldeten Benutzer oder dem aktuellen Verzeichnis angegeben. Somit weiß man nie, an welchem Rechner unter welchem Benutzenamen man arbeitet, was bei mehreren zu administrierenden Systemen sehr anstrengend sein kann.
Um diesem Umstand ein Ende zu setzen gibt es die Möglichkeit, die Datei bashrc im Homelaufwerk eines jeden Benutzers zu editieren. Hierzu muss man nur einen Eintrag PS1="..." erstellen. Für eine systemweite Formatierung benutzt man die /etc/bashrc. Trägt man nun vordefinierte Variablen oder Text ein, so werden diese in der Shell angezeigt:
Editieren der bashrc
PS1="Mein Prompt > "
********************
Mein Prompt >
Editieren der bashrc
PS1="\u@\H > "
********************
andreas@server_1 >
Dies waren zwei Beispiele. In dem ersten Beispiel wurde ausschließlich Text eingetragen, was nicht wirklich Sinn macht, da keine Systeminformationen ausgelesen werden. Interessanter ist da die Möglichkeit, mithilfe von vorgegebenen Variablen Systeminformationen auszugeben. Es gibt folgende Variablen:
\a Warnton
\d Datum im "Wed Sep 06" Format
\e ASCII Escape Zeichen
\h Hostname
\H Kompletter Hostname (mybox.mydomain.com)
\j Anzahl der Prozesse
\l Name der Shell (ttyp4)
\n Neue Zeile
\r Rücklauf
\s Name der ausführbaren Shell (bash)
\t Zeit 24-Std Format (23:01:01)
\T Zeit 12-Std Format (11:01:01)
\@ Zeit 12-Std Format mit am/pm
\u Benutzername
\v Version der Bash
\V Version der Bash mit patchlevel
\w Aktueller Verzeichnispfad (/home/user1)
\W Aktuelles Verzeichnis (user1)
\! Current command's position in the history buffer
\# Command number
\$ User = "$", Root = "#" Anzeige
\\ A Backslash
\[ Vor Farbsequenz für Zeichen
\] Nach Nicht-Zeichen
Farben
Neben dem Auslesen von Systeminformationen kann man den Text des Eingabeprompts farblich hervorheben. Bevor wir aber auf die entsprechenden Variablen eingehen, erst einmal ein Blick auf die möglichen Farben aus der Farbpallete. Hieraus lässt sich schließen, dass die Zahlen 30 bis 37 die Schriftfarbe und 40 bis 47 die Hintergrundfarbe festlegen. Des Weiteren kann man bestimmen, ob die Schrift normal oder fett dargestellt wird.
Die Farbe aktiviert man mithilfe folgender Zeichenfolge: \[\e[0;32m\]\u@\h > . Diese Zeichenfolge scheint auf den ersten Blick etwas verwirrend, daher gehen wir Schritt für Schritt vor: \[ und \] sind einleitende und endende Tag für die Farbe. Alles was hinter dem \] erscheint, sind die Variablen, die wir aus dem ersten Beispiel kennen. Zwischen \[ und \] werden nun die Farben bestimmt, nämlich mit \e[0;32m . Dieser Teil bedeutet, dass wir normale Schrift (0, für fett würde hier 1 stehen) und die Schriftfarbe grün (32) haben möchten.
Schriftfarbe = grün, Schriftart = normal, Hintergrund = keiner
PS1="\[\e[0;32m\]\u@\H:"
Schriftfarbe = grün, Schriftart = normal, Hintergrund = schwarz
PS1="\[\e[0;32;40m\]\u@\H:"
Wir haben es jetzt geschafft, den kompletten Prompt farblich zu editieren. Leider ist diese Möglichkeit noch nicht optimal, da auch der eingebene Text diese Farbe übernimmt. Aus diesem Grund sollte man nach dem Abschnitt des Eingabeprompts wieder die Default-Einstellung nutzen. Dazu benutzt man \e[0m .
Optimierte Version, nur Prompt farblich
PS1="\[\e[0;32;40m\]\u@\H:\e[0m "
Natürlich kann man auch mehrere Farben festlegen:
Mehrere Farben
PS1="\[\e[0;32;40m\]\u@\[\e[1;35m\]\H:\e[0m "
Sinnvoller Einsatz dieser Formatierung
Natürlich kann man mithilfe dieser Anleitung eine individuell angepasste Shell erstellen, die einem zusätzlich mehr Ordnung und eine bessere Übersicht verschafft. Es ist aber sehr sinnvoll, beispielsweise für den Root-Account eine eigenes, vielleicht sogar sehr hervorstechendes Design zu verpassen, damit man jederzeit weiß, dass man gerade als Root an der Shell arbeitet. Denn mit dem su-Befehl kann man bekanntlich schnell und einfach die User in der Shell wechseln. So weiß man immer, ob man gerade als Benutzer oder Administrator arbeitet und vermeidet so Zugriffsprobleme.