Wie erhalte ich, dass gnome-terminal seinen Titel nach ssh wiederherstellt?

3109
Sam Brightman

Ich verwende gnome-terminal, um seinen Titel entsprechend den Terminalbefehlen zu aktualisieren, die ihre eigenen Titel aktualisieren (Standardeinstellung bei Fedora 13). Wenn ich SSH an einen anderen Ort weitergebe, wird der Titel korrekt aktualisiert, aber dann wird SSH beendet, und gnome-terminal zeigt an, dass ich immer noch remote angemeldet bin. Dies ist verwirrend, wenn Sie versuchen, umher zu navigieren. Wie kann ich das Verhalten beim Anmelden beibehalten und den alten Titel beim Abmelden wieder herstellen (standardmäßig nur "Terminal", aber besser noch den aktuellen Standort anzeigen)?

2
Welche Shell verwenden Sie auf der lokalen Seite? Ignacio Vazquez-Abrams vor 13 Jahren 0
Ich habe momentan keinen Zugriff, aber ziemlich sicher, dass es bash ist - was auch immer der Standard von gnome-terminal auf Fedora 13 ist. Sam Brightman vor 13 Jahren 0
Ich habe es mit ein paar Wrapper-Befehlen an ssh und su behoben: http://unix.stackexchange.com/a/341277/112190 phyatt vor 7 Jahren 0

1 Antwort auf die Frage

6
grawity

Fügen Sie die Set-Title-Escape-Sequenzen der RC-Datei Ihrer Shell hinzu. Für bashv4 wäre dies:

if [[ $TERM == xterm* ]]; then # This puts "user@host workdir" into the titlebar. # (look for section "PROMPTING" in bash's manual) title='\u@\h \w'  PS1+="\[\e]0;$title\007\]" fi 

in deiner ~/.bashrc.


Hören Sie hier auf zu lesen, es sei denn, Sie mögen es, mit bashSkripten herumzuspielen .

Der obige Code ist eigentlich eine stark vereinfachte Version meines ~/.bashrcSnippets:

case $TERM in [xkE]term*|rxvt*|cygwin) title_seq='\e]0;%s\007';; screen*) # only set the "screen"window title title_seq='\ek%s\e\\';; esac  # Very useful for: title syslog && tailf /var/log/syslog title() { [ "$title_seq" ] && printf "$title_seq" "$*"; }  # Modify the prompt string. if [ "$title_seq" ]; then title='\u@\h \w' PS1+="\[$(printf "$" "$title")\]" fi 

Das war eigentlich mein alter ~/.bashrc Ausschnitt. Nach der Entdeckung musste PROMPT_DIRTRIM=1ich die $PS1Änderung (die letzte ifAnweisung) durch Folgendes ersetzen :

update_title() { title "$USER@$HOSTNAME $" } PROMPT_COMMAND="update_title"