Como obtenho o gnome-terminal para restaurar seu título após o ssh?

2

Estou executando o gnome-terminal para atualizar seu título de acordo com os comandos do terminal, atualizando seus próprios títulos (padrão no Fedora 13). Quando eu SSH para algum outro lugar, o título é atualizado corretamente, mas depois o SSH sai e o gnome-terminal está indicando que eu ainda estou logado remotamente. Isso é confuso ao tentar navegar. Como faço para manter o comportamento ao fazer login e restaurar o título antigo ao fazer logout (por padrão, apenas "Terminal", mas é melhor exibir a localização atual)?

    
por Sam Brightman 15.10.2010 / 11:51

1 resposta

6

Adicione as seqüências de escape set-title ao arquivo rc do seu shell. Para bash v4, isso seria:

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
case $TERM in
[xkE]term*|rxvt*|cygwin)
    title_seq='\e]0;%s
update_title() {
    title "$USER@$HOSTNAME ${PWD/#$HOME/~}"
}
PROMPT_COMMAND="update_title"
7';; 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
7\]" fi

no seu ~/.bashrc .

Pare de ler aqui, a menos que goste de brincar com bash scripts.

O código acima é, na verdade, uma versão muito simplificada do meu ~/.bashrc snippet:

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
case $TERM in
[xkE]term*|rxvt*|cygwin)
    title_seq='\e]0;%s
update_title() {
    title "$USER@$HOSTNAME ${PWD/#$HOME/~}"
}
PROMPT_COMMAND="update_title"
7';; 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
7\]" fi

Na verdade, esse era meu antigo % snippet de~/.bashrc. Ao descobrir PROMPT_DIRTRIM=1 , tive que substituir a modificação $PS1 (a última declaração if ) por:

%pre%     
por 15.10.2010 / 19:52