En este momento estoy usando un código Perl de una línea para cambiar los títulos de las barras de mi terminal.
print("\e]0;@ARGV\7");
pero cada vez que hago ssh a otra máquina remota, el host modificará el título (lo cual no me molesta particularmente). Pero después de salir de la conexión, el título modificado permanece. ¿Hay alguna manera de solucionar esto? Básicamente, quiero un título fijo para mis terminales cuando operen localmente.
Utilizo principalmente el terminal y terminador xfce en CentOS o Debian. Gracias.
EDITAR
Otra sutileza es que, en lugar de tener todos los terminales con el mismo nombre, preferiría tener la libertad de editar sus títulos sobre la marcha, pero sólo prohibir que la sesión SSH modifique lo que he editado.
Respuesta1
Solución: agregue algunas funciones ~/.bashrc para hacer algodespuéscomandos ssh y su
function title()
{
# change the title of the current window or tab
echo -ne "\033]0;$*\007"
}
function ssh()
{
/usr/bin/ssh "$@"
# revert the window title after the ssh command
title $USER@$HOST
}
function su()
{
/bin/su "$@"
# revert the window title after the su command
title $USER@$HOST
}
Nota: reinicie bash después de editar ~/.bashrc
Ejemplo:
# title is "user1@boxA"
ssh boxB # auto changes title while on boxB to "user1@boxB"
exit
# title returns back to "user1@boxA" because of our title call in ssh()
su - user2 # auto changes title while switched user to user2: "user2@boxA"
exit
# title returns back to "user1@boxA" because of our title call in su()
Espero que ayude.
Respuesta2
No sé acerca de los títulos de las ventanas, pero he estado intentando que mi sistema haga algo al finalizar una sesión ssh; en realidad, después de finalizar una sesión ssh. En resumen: no funciona así. Básicamente tienes tres opciones:
Escriba un contenedor alrededor de ssh, es decir, un script de shell ejecutable
ssh
cuyo nombre tenga prioridad sobre/usr/bin/ssh
su $PATH que contiene la líneaexec /usr/bin/ssh $@
en algún lugar en el medio. Esto le permite hacer que su shell haga algunas cosas antes y después de ejecutar el binario ssh efectivo, mientras mantiene la sobrecarga al mínimo.Escriba un parche para las fuentes SSH de su elección para proporcionarle un enlace de limpieza que ejecute un comando de shell pasado a través de la línea de comandos o alguna configuración de configuración. Eso es lo que queremos.
He
PROMPT_COMMAND
evaluado la salida dehistory
. Básicamente, un enfoque más genérico y más feo de 1.
Respuesta3
Configure su archivo de puntos de shell local (por ejemplo, $PROMPT_COMMAND
en ~/.bashrc
) para establecer el título del terminal de forma adecuada, utilizando el mismo mecanismo.
Por ejemplo:
export PROMPT_COMMAND="printf '\e]0;bash\7\n'"
Respuesta4
Otras respuestas no funcionarían para mí cuando salgo de SSH, pero me acercaron. Agregar setw automatic-rename funciona cuando salgo de la sesión ssh remota, por lo que cambia el nombre automáticamente y ya no tengo que salir de la ventana para restablecer. [Ene. 2018-Debian 9]
ssh() {
tmux rename-window "$*"
command ssh "$@"
tmux setw automatic-rename
}