Je voudrais définir le titre du terminal pour user@hostque je puisse facilement savoir à quelle machine je suis connecté à partir du titre de la fenêtre. Existe-t-il un moyen de le faire depuis SSH ou depuis le terminal GNOME?
Je voudrais définir le titre du terminal pour user@hostque je puisse facilement savoir à quelle machine je suis connecté à partir du titre de la fenêtre. Existe-t-il un moyen de le faire depuis SSH ou depuis le terminal GNOME?
Réponses:
Oui. Voici un exemple de bash utilisant PS1 qui devrait être distro-agnostique:
Plus précisément, la séquence d'échappement \[\e]0; __SOME_STUFF_HERE__ \a\]présente un intérêt. J'ai modifié cela pour qu'il soit défini dans une variable distincte pour plus de clarté.
# 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
Notez également qu'il peut y avoir de nombreuses façons de définir le titre d'un xterm, selon le programme de terminal que vous utilisez et le shell. Par exemple, si vous utilisez Konsole de KDE, vous pouvez remplacer le paramètre de titre en accédant à Settings-> Configure Profiles-> Edit Profile-> Tabset en définissant les paramètres Tab title formatet Remote tab title format.

En outre, vous pouvez consulter:
\hcette invite que si elle $SSH_CLIENTn'est pas vide.
                    \[\e]2;\u@\h\a. (A également modifié ma réponse avec cette information)
                    Voici une version du script bash SSH que j'utilise qui définit le titre et l'invite de commande du serveur distant sans apporter de modifications au serveur distant.
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"
Vous pouvez l'invoquer en appelant ./my_ssh.sh username hostname
Ce qui suit fonctionne pour moi (probablement uniquement sur gnome-terminal):
comp@home$ cat /usr/bin/ssh
#!/bin/bash    
echo -ne "\033]0;${1}\007"
ssh_bkup "$@"
Où la commande ssh_bkup est simplement «ssh» de base avec un nom modifié, qui est appelé juste après que la commande echo change le titre du terminal actuel.
~/bina la priorité sur mon chemin, j'ai donc placé votre script dans mon ~/bin/ssh. La dernière ligne appelle explicitement à /usr/bin/ssh. De cette façon, d'autres utilisateurs utilisent toujours la norme sshlorsqu'ils sont connectés sur cette machine et (puisque nos répertoires personnels sont sur le serveur, les comptes LDAP), j'obtiens la fonctionnalité sur la machine sur laquelle je suis connecté.
                    c'est une version 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'