Título de la pestaña de terminal después de la sesión SSH

11

En Mac OS X (estoy en 10.6.8, aunque creo que otras versiones son las mismas), pasar a una máquina remota cambia el título de la pestaña actual en Terminal. Molesto, cuando me desconecto de la máquina remota, ya sea explícitamente exito mediante un tiempo de espera, el título de la pestaña no vuelve a ser lo que era.

Casi a diario, esto casi me causa un ataque al corazón, cuando escribo un comando u otro, solo para ver por el rabillo del ojo que la pestaña todavía se llama user @ remotehost. Soy un usuario cauteloso que siempre tiende a pwdetc. para confirmar mi ubicación antes de hacer nada, pero aún así me atrapa en un momento de pánico cuando lo estoy haciendo DROP DATABASE xy veo el nombre del host remoto en la pestaña.

En pocas palabras, ¿hay alguna forma de revertir este título cuando me desconecto de un host remoto, o tengo que seguir abriendo una nueva pestaña cada vez que me desconecto, para restablecer el título?

Peter O'Callaghan
fuente
los nombres de las terminales también se restablecen al salirnpm
Awesome_girl

Respuestas:

20

Agregue un PROMPT_COMMANDa su .bash_profile

export PROMPT_COMMAND="echo -ne '\033]0;${USER}@${HOSTNAME}\007';$PROMPT_COMMAND"

Se PROMPT_COMMANDejecuta cada vez que se muestra el mensaje.

Tenga en cuenta que incluimos la PROMPT_COMMANDvariable de entorno existente , de modo que no perdamos ninguna configuración existente (es decir update_terminal_cwd).

s01ipsist
fuente
2
Asegúrese de agregar su código a PROMPT_COMMAND en lugar de reemplazarlo, por ejemplo PROMPT_COMMAND="<your code>; $PROMPT_COMMAND"; de lo contrario, deshabilitará otras funciones que usan esta variable. Por ejemplo, / etc / bashrc lo usa para establecer el directorio de trabajo actual del terminal para que Terminal pueda mostrarlo y usarlo para varias operaciones.
Chris Page
@ChrisPage ¿El nuevo código debe venir antes $PROMPT_COMMANDpara que se conserve la otra funcionalidad?
reve_etrange
¿Por qué no ponerlo directamente en PS1?
Yongwei Wu
¿Es así como editas el .bash_profile? sublime $HOME/.bash_profile?
Awesome_girl
@Awesome_girl Asegúrese de que el sublcomando esté instalado y luego edite el archivo desde su terminal usando subl ~/.bash_profile. Si este comando no existe, siga esto: sublimetext.com/docs/2/osx_command_line.html
XtraSimplicity
1

Esto es lo que necesitará pegar en su .bash_profilearchivo. Esto es mucho más limpio y toma el enfoque que Apple hace cuando actualiza su directorio de trabajo actual. La verificación de la variable update_term_titleya está presente no es realmente necesaria (como nadie llama bash -- login), sino que solo está presente como guardia.

if [ -z "$INSIDE_EMACS" ]; then
    # Update the terminal title on every prompt shown
    update_term_title() {
        # Print user@short-hostname once SSH quits.
        echo -ne "\033]0;${USER}@${HOSTNAME%%.*}\007"
        # Or ${HOSTNAME} if short host names aren't your taste
        # Or echo -ne "\033]0;\007" if you don't want anything.
    }
    # Check to see if update terminal title is present?
    if ! echo $PROMPT_COMMAND | grep -q update_term_title
    then
       # This function is not found in PROMPT_COMMAND, add it
       PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND; }update_term_title"
    fi
fi
zapstar
fuente
1
Lol, me preguntaba quién escribió esta respuesta ... resulta que fui yo :-)
zapstar