Under Construction

Titelzeile Terminal

In den meisten Fällen arbeitet man unter UNIX/AIX mit einem virtuellen Terminell, welches von einer graphischen Applikation wie xterm, gnome-terminal oder ähnlich zur Verfügung gestellt wird. Diese graphischen Applikationen bieten üblicherweise Escape-Sequenzen an, über die auf die Titelzeile zugegriffen werden kann. Viele Benutzer nutzen dies aus, um Informationen wie Benutzername, Rechnername und aktuelles Arbeitsverzeichnis dort anzeigen zu lassen.

Der Terminal-Typ wird in der Umgebungsvariablen TERM abgelegt. Für xterm und ähnliche Applikationen ist dies typischerweise der Wert xterm oder xterm-256color oder ähnlich. Für diese Terminal-Emulatoren kann mit Hilfe der folgenden Escape-Sequenz auf die Titelzeile zugegriffen werden:

ESC]0; string BEL

Die Zeichenkette zwischen „ESC]0;“ und „BEL“ wird dann in der Titelzeile ausgegeben. Hierfür kann z.B. das Kommando „echo –ne“ verwendet werden:

[user01@aixe01 ~]$ echo -ne "\033]0;TITLE\007"
[user01@aixe01 ~]$

Hinweis: Die Zeichenfolge „\033“ ist die Ersatzdarstellung für das Zeichen ESC und „\007“ ist die Ersatzdarstellung des Zeichens BEL. Die Option „-e“ erlaubt die Interpretation von solchen Zeichen durch die bash.

Es erscheint die Zeichenkette „TITLE“ in der Titelzeile des xterm (oder ähnlicher Applikation).

Um z.B. Benutzer, Rechner und aktuelles Verzeichnis in der Form „user@host:directory“ anzeigen zu lassen, kann das folgende Kommando verwendet werden:

[user01@aixe01 ~]$ echo -ne "\033]0;${USER}@${HOSTNAME}:${PWD}\007"
[user01@aixe01 ~]$

Wechselt man jetzt allerdings das Verzeichnis, dann stimmt die Pfadinformation in der Titelzeile natürlich nicht mehr mit der aktuellen Position im Dateisystem überein. Die Titelzeile wurde ja nicht erneut gesetzt.

Das lässt sich allerdings sehr leicht beheben. Die bash bietet die Variable PROMPT_COMMAND an, diese erlaubt es ein Kommando zu hinterlegen, das immer ausgeführt wird, bevor die bash den Shell-Prompt ausgibt. Wir hinterlegen das obige Kommando in dieser Variablen:

[user01@aixe01 ~]$ PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}:${PWD}\007"'
[user01@aixe01 ~]$

Hinweis: Um zu verhindern das die Shell-Variablen, noch vor der Zuweisung ausgewertet werden, wurde das komplette Kommando in einfache Apostrophe eingeschlossen. Damit werden die Variablen erst erweitert, wenn das PROMPT_COMMAND ausgeführt wird.

Jetzt ändert sich der angezeigte Pfad beim Wechseln in ein anderes Verzeichnis auf korrekte Weise.

Die Variable PROMPT_COMMAND sollte natürlich in eine der Start-Dateien der bash eingetragen werden. Wir verwenden wieder ~/.bashrc:

[user01@aixe01 ~]$ cat ~/.bashrc
...
case $TERM in
xterm*) PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}:${PWD}\007"' ;;
esac
...
[user01@aixe01 ~]$

Damit das PROMPT_COMMAND nur gesetzt wird, wenn es sich um ein xterm oder ähnliches Programm handelt, wird das Setzen mittels case nur für Terminals vom Typ xterm* durchgeführt.

Sollte das PROMPT_COMMAND komplexer als ein simples echo wie oben sein, dann empfiehlt sich die Definition einer Funktion:

[user01@aixe01 ~]$ cat ~/.bashrc
...
function __xterm_prompt_command
{
        echo -ne "\033]0;${USER}@${HOSTNAME}:${PWD}\007"
}

case $TERM in
xterm*) PROMPT_COMMAND=__xterm_prompt_command ;;
esac
...
[user01@aixe01 ~]$

Auf einigen Systemen setzt der Window-Manager einen Teil des Titels. Häufig wird dann der Rechnername und oder Benutzername und Rechnername zusätzlich in die Titelzeile geschrieben. Loggt man sich dann per SSH auf einen anderen Rechner ein und lässt die Titelzeile wie oben setzen, dann wird vom Window-Manager zusätzlich der ursprüngliche Rechnername (oder mehr) angezeigt. Es erscheinen dann zwei Rechnernamen, was unter Umständen etwas stören kann. Durch Einfügen von ein paar Leerzeichen kann man diese eventuell zumindest optisch etwas voneinander trennen.