Configurar
Eu executo screen em uma máquina local e uso diferentes janelas de tela para conectar-me a diferentes hosts. Seria bom alterar os nomes das janelas para os nomes dos hosts automaticamente durante o processo ssh.
Abordagens
Eu tentei diferentes variações das 2 abordagens abaixo:
1) Usando LocalComand
o arquivo de configuração ssh:
Host *
PermitLocalCommand yes
LocalCommand '[ "${TERM:0:6}" == "screen" ] && printf "\ek@%h\e\\"
2) Criando uma função bash personalizada:
# function to set screen name based on host and reset on exit
function ssh() {
echo -e '\033k'@$1'\033\\'
/usr/bin/env ssh -Y "$@"
echo -e '\033k'local'\033\\'
}
Problema
Ambas as abordagens funcionam, mas também parecem interferir em coisas como o preenchimento automático:
$ scp user@host:~/.s<tab>
...o^[\\\\ ...cal^[\\\\
Pergunta
Existe alguma condição que poderia ser usada (além da verificação if $TERM == screen
) que permitiria a execução LocalCommand
(ou a ssh()
função) somente ao conectar-se ao host e não quando usada para preenchimento automático?