Me gustaría establecer el título del terminal para user@host
que pueda decir fácilmente a qué máquina estoy conectado desde el título de la ventana. ¿Hay alguna manera de hacer esto desde SSH o desde la Terminal de GNOME?
Me gustaría establecer el título del terminal para user@host
que pueda decir fácilmente a qué máquina estoy conectado desde el título de la ventana. ¿Hay alguna manera de hacer esto desde SSH o desde la Terminal de GNOME?
Respuestas:
Sí. Aquí hay un ejemplo para bash usando PS1 que debería ser independiente de la distribución:
Específicamente, la secuencia de escape \[\e]0; __SOME_STUFF_HERE__ \a\]
es de interés. He editado esto para que se establezca en una variable separada para mayor claridad.
# uncomment for a colored prompt, if the terminal has the capability; turned
# off by default to not distract the user: the focus in a terminal window
# should be on the output of commands, not on the prompt
force_color_prompt=yes
if [ -n "$force_color_prompt" ]; then
if [ -x /usr/bin/tput ] && tput setaf 1 >&/dev/null; then
# We have color support; assume it's compliant with Ecma-48
# (ISO/IEC-6429). (Lack of such support is extremely rare, and such
# a case would tend to support setf rather than setaf.)
color_prompt=yes
else
color_prompt=
fi
fi
TITLEBAR='\[\e]0;\u@\h\a\]'
# Same thing.. but with octal ASCII escape chars
#TITLEBAR='\[\033]2;\u@\h\007\]'
if [ "$color_prompt" = yes ]; then
PS1="${TITLEBAR}\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\W\[\033[00m\]\$ "
else
PS1="${TITLEBAR}\u@\h:\W\$ "
fi
unset color_prompt force_color_prompt
También tenga en cuenta que puede haber muchas formas de configurar el título de un xterm, según el programa de terminal que esté utilizando y el shell. Por ejemplo, si está utilizando Konsole de KDE, puede anular la configuración del título yendo a Settings
-> Configure Profiles
-> Edit Profile
-> Tabs
y configurando la configuración Tab title format
y Remote tab title format
.
Además, es posible que desee consultar:
\h
ese aviso solo si $SSH_CLIENT
no está vacío.
\[\e]2;\u@\h\a
. (También edité mi respuesta con esa información)
Aquí hay una versión del script SSH bash que uso que establece el título del servidor remoto y el símbolo del sistema sin realizar ningún cambio en el servidor remoto.
my_ssh.sh:
#!/bin/bash
SETTP='MY_PROMPT="$HOSTNAME:$PWD\$ "'
SETTP="$SETTP;"'MY_TITLE="\[\e]0;$HOSTNAME:$PWD\a\]"'
SETTP="$SETTP;"'PS1="$MY_TITLE$MY_PROMPT"'
ssh -t $1@$2 "export PROMPT_COMMAND='eval '\\''$SETTP'\\'; bash --login"
Puede invocarlo llamando a ./my_ssh.sh username hostnamename
Lo siguiente funciona para mí (probablemente solo en gnome-terminal):
comp@home$ cat /usr/bin/ssh
#!/bin/bash
echo -ne "\033]0;${1}\007"
ssh_bkup "$@"
Donde el comando ssh_bkup es simplemente 'ssh' básico con un nombre cambiado, que se llama justo después de que el comando echo cambia el título del terminal actual.
~/bin
tiene prioridad en mi camino, así que puse tu script en mi ~/bin/ssh
. La última fila llama explícitamente a /usr/bin/ssh
. De esta manera, otros usuarios aún usan el estándar ssh
cuando inician sesión en esa máquina y (dado que nuestros directorios principales están en el servidor, cuentas LDAP) obtengo la funcionalidad en cualquier máquina en la que haya iniciado sesión.
esta es la versión alias
SETTP='MY_PROMPT="$HOSTNAME:$PWD\$ "'
SETTP="$SETTP;"'MY_TITLE="\[\e]0;$HOSTNAME:$PWD\a\]"'
SETTP="$SETTP;"'PS1="$MY_TITLE$MY_PROMPT"'
SETPC="export PROMPT_COMMAND='eval '\\''$SETTP'\\'; bash --login"
alias myssh='function _myssh(){ ssh -t $1@$2 $SETPC; };_myssh'