Derzeit wird mein Bash-Terminal- / Tab-Titel basierend auf dem Verzeichnis festgelegt, in dem ich mich befinde. Beispiel:
bob@bobscomputer:~/i/had/some/great/pie/yesterday
Dies ist nicht sehr nützlich, wenn mehrere Registerkarten nebeneinander geöffnet sind. Wenn ich zum Beispiel 4 Registerkarten des obigen Verzeichnisses nebeneinander geöffnet habe, sehe ich nur
bob@bobscomputer:~/i/had...
4 Mal.
Ich möchte, dass alle meine Terminaltitel automatisch auf den letzten Teil des Pfads gesetzt werden. Im obigen Beispiel möchte ich den Titel haben
yesterday
Natürlich sollte sich der Titel ändern, wenn ich Verzeichnisse wechsle. Ich möchte dies tun, ohne meine Eingabeaufforderung zu ändern, daher sollten die Eingabeaufforderung und der Terminaltitel unterschiedlich sein.
Gibt es eine Möglichkeit, dies zu tun?
command-line
bash
titlebar
Starrender Frosch
quelle
quelle
Antworten:
Warum möchten Sie dies tun, ohne Ihre PS1-Variable zu ändern? Das ist der richtige Weg.
Wenn Sie Folgendes ausführen, erhalten Sie, was Sie wollen:
export PS1="\[\e]0;\W\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "
Dies ist nur die Standardaufforderung:
export PS1="\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ "
... und ersetzen
\u@\h: \w
durch\W
.Sie können dasselbe mit jedem Befehl tun, der den richtigen Escape-Code wiedergibt:
echo -en "\e]0;${PWD##*/}\a"
... aber dann würdest du ständig gegen Bash kämpfen, um zu verhindern, dass es mit PS1 gemacht wird (der beste Weg).
quelle
Ja. Voranstellen:
\[\e]0;\W\a\]
auf deine PS1. Dadurch wird das Erscheinungsbild Ihrer Eingabeaufforderungen nicht geändert, der Titel Ihrer Terminalregisterkarten wird jedoch automatisch auf den Basisnamen des aktuellen Arbeitsverzeichnisses gesetzt.quelle