Jak uzyskać gnome-terminal do przywrócenia tytułu po ssh?

2

Używam zestawu gnome-terminal, aby zaktualizować jego tytuł zgodnie z poleceniami terminalowymi aktualizującymi własne tytuły (domyślnie w Fedorze 13). Kiedy SSH do innego miejsca, tytuł jest poprawnie aktualizowany, ale następnie SSH kończy działanie i gnome-terminal wskazuje, że nadal jestem zalogowany zdalnie. Jest to mylące przy próbie poruszania się. Jak zachować zachowanie podczas logowania i przywrócić stary tytuł podczas wylogowywania (domyślnie tylko „Terminal”, ale lepiej wyświetlać bieżącą lokalizację)?

Sam Brightman
źródło
Jakiej powłoki używasz po stronie lokalnej?
Ignacio Vazquez-Abrams
Nie masz teraz dostępu, na pewno jest to bash - cokolwiek jest domyślne dla gnome-terminal w Fedorze 13.
Sam Brightman
Naprawiłem to, używając kilku poleceń do ssh i su: unix.stackexchange.com/a/341277/112190
phyatt

Odpowiedzi:

6

Dodaj sekwencje ucieczki set-title do pliku rc powłoki. Dla bash v4, byłoby to:

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

w Twoim ~/.bashrc.


Przestań czytać tutaj, chyba że lubisz się bawić bash skrypty.

Powyższy kod jest w rzeczywistości bardzo uproszczoną wersją mojego ~/.bashrc skrawek:

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_seq//\\/\\\\}" "$title")\]"
fi

Właściwie to było moje stary ~/.bashrc skrawek. Po odkryciu PROMPT_DIRTRIM=1 Musiałem wymienić $PS1 modyfikacja (ostatnia if oświadczenie) z:

update_title() {
    title "$USER@$HOSTNAME ${PWD/#$HOME/~}"
}
PROMPT_COMMAND="update_title"
grawity
źródło