¿Cómo restablecer el título de la ventana / pestaña de iTerm2 al desconectarse del host remoto? [duplicar]

0

Tengo mi bash_profile en mi Mac y las computadoras remotas a las que me conecto a la configuración para colocar automáticamente el nombre de host en el área de título de la ventana (o pestaña).

Un shell bash en mi máquina local

Unnombredehostremoto"Sócrates"; también un shell bash.

Elproblemaesque,cuandosalgo(ymedesconecto)delhostremoto,eltítulodelaventanapermanececonelnombredelhostremoto.Entonces,enefecto,estoyenelshellbashdeApplelocalconelnombreremoto.Parasolucionarlo,hagounodelossiguientes:

  • cierralaventanayabreunanueva
  • volveraobtenerelcódigo.bash_profile(.~/.bash_profile)
  • creeunnuevosubshellemitiendoelcomandobash(nodeseableenabsoluto)

¿Cómopuedohacerestoautomáticamenteparaquecuandosalgadeunshellremoto,eltítulovuelvaalnombredelhostoriginalparasaberaquéhostrealmenteestoyconectado?

Tengaencuentaquelapreguntaanterior, Terminal muestra el directorio de la ubicación SSH anterior incluso cuando no está ejecutando SSH no lo hizo ' t abordar adecuadamente el problema porque la solución fue modificar .bash_logoff que solo funcionó para shells de inicio de sesión.

    
pregunta Allan 10.11.2018 - 05:05

1 respuesta

0

La solución a este problema se resuelve utilizando los códigos de control de terminal (Esc 22 y 23) y colocando cuatro líneas simples en .bashrc del host remoto:

# ~/.bashrc
#
# Set the Terminal Title

echo -ne "3[22;0t"                     #Save Title on Stack
echo -ne "3]0;${HOSTNAME}
# run a .bashrc file if it exists.

test -f ~/.bashrc && . ~/.bashrc
7" #Set New Title trap 'echo -ne "3[23;0t"' EXIT #Reset Title Window

Cómo funciona esto

Al utilizar los Códigos de secuencia de escape de terminal 22 y 23 , podemos guardar y recuperar el título original. La función trap ( man bash ) ejecutará un comando cuando se reciba una señal; en este caso a la salida.

Ahora, cuando salgo (finalizo) el host remoto, el título vuelve al nombre de host correcto.

¿Por qué .bashrc?

Quiero tener esto disponible para mí, ya sea que inicie sesión en el host desde una máquina remota (la más común) o cuando sea local en él. Se lee .bash_profile para un shell de inicio de sesión interactivo y se lee .bashrc para un shell interactivo, sin inicio de sesión (local).

Para garantizar que esto sea igual para ambas condiciones, incluyo lo siguiente en mi .bash_profile :

# ~/.bashrc
#
# Set the Terminal Title

echo -ne "3[22;0t"                     #Save Title on Stack
echo -ne "3]0;${HOSTNAME}
# run a .bashrc file if it exists.

test -f ~/.bashrc && . ~/.bashrc
7" #Set New Title trap 'echo -ne "3[23;0t"' EXIT #Reset Title Window
    
respondido por el Allan 10.11.2018 - 05:05

Lea otras preguntas en las etiquetas