Configuración
Ejecuto screen en una máquina local y uso diferentes ventanas de pantalla para conectarme a diferentes hosts. Sería bueno cambiar los nombres de las ventanas por los nombres de los hosts automáticamente durante el proceso ssh.
Enfoques
He probado diferentes variaciones de los 2 enfoques siguientes:
1) Usando LocalComand
en el archivo de configuración ssh:
Host *
PermitLocalCommand yes
LocalCommand '[ "${TERM:0:6}" == "screen" ] && printf "\ek@%h\e\\"
2) Crear una función 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
Ambos enfoques funcionan, pero también parecen interferir con cosas como el autocompletado:
$ scp user@host:~/.s<tab>
...o^[\\\\ ...cal^[\\\\
Pregunta
¿Existe alguna condición que podría usarse (además de verificar if $TERM == screen
) que permitiría ejecutar LocalCommand
(o la ssh()
función) solo cuando se conecta al host y no cuando se usa para autocompletar?