Por que o ssh não liga o título do terminal?

7

Como você deve saber, quando você envia ssh para um servidor a partir de um terminal X (rxvt, gnome-terminal ...), ssh altera o título da janela para refletir user @ host, mas não mude de volta.

Existem várias dicas sobre como corrigir isso nas Internets. Eu não estou pedindo por mais um 1 .

O que estou procurando é a explicação do motivo. Então eu posso aprender a viver com isso. Por que o ssh não define o título de volta?

Para colocar de forma mais FITD: se o vim conseguir, por que o ssh não pode?

1 ... a menos que a explicação seja que o problema é causado apenas por uma configuração incorreta do ssh, caso em que saúdo a maneira de corrigir isso.

    
por Alois Mahdal 06.06.2013 / 17:51

1 resposta

13

O título da janela em um terminal é definido por caracteres de controle incorporados na saída do que estiver sendo executado no terminal. O ssh é alheio a isso, uma vez que simplesmente passa os caracteres que são gerados no final remoto de volta para o stdout do cliente. Normalmente, a maioria dos sistemas UNIX / Linux que "definem o título da janela" fazem isso incorporando os caracteres de controle na variável PS1 do prompt do shell no /etc/bash_profile principal ou no padrão $HOME/.bashrc ou $HOME/.bash_profile do usuário (ou qualquer arquivo de configuração que seu shell escolhido usa). Esta página descreve como fazê-lo em diferentes camadas.

Então, com isso explicado, então você efetua login em uma máquina remota com essas coisas configuradas, o título da janela é definido, e a razão pela qual o título da janela não "muda de volta" é provavelmente porque sua máquina local não faz isso. t esses caracteres de controle incorporados em seu prompt local para redefinir o título da janela. Em outras palavras, uma vez que o título da janela tenha sido definido por esses caracteres de controle, eles não serão desfeitos automaticamente. Você tem que realmente gerar os caracteres de controle novamente para alterá-los, geralmente colocando-os em sua variável de prompt local.

O VIM em execução na máquina local pode consultar o título da janela do servidor X (referenciando a ID da janela em $WINDOWID ) e salvar o título para restaurá-lo quando sair. Isso pode ser controlado com as opções VIM title e titlestring (consulte :help 'title' ). O cliente ssh simplesmente não parece fazer isso, provavelmente porque o ssh não gerencia diretamente o título da janela, apenas mostra os caracteres do shell remoto.

edit: Agradecimentos a Stephane Chazelas nos comentários por correções sobre o comportamento do título do VIM.

    
por 06.06.2013 / 20:33