16 votes

Titre de l'onglet du terminal après une session SSH

Dans Mac OS X (je suis sur 10.6.8, mais je crois que les autres versions sont les mêmes), le fait de se connecter à une machine distante change le titre de l'onglet actuel dans Terminal. Malheureusement, lorsque je me déconnecte de la machine distante, soit explicitement avec la commande exit ou via un délai d'attente, le titre de l'onglet ne redevient pas ce qu'il était.

Presque tous les jours, j'ai failli faire une crise cardiaque, lorsque je suis en train de taper une commande ou une autre et que je vois du coin de l'œil que l'onglet s'appelle toujours user@remotehost. Je suis un utilisateur prudent qui a toujours tendance à pwd etc. pour confirmer ma position avant de faire quoi que ce soit, mais il me surprend toujours dans un moment de panique lorsque je suis en train de faire DROP DATABASE x et je vois le nom de l'hôte distant dans l'onglet.

Pour faire court, existe-t-il un moyen de rétablir ce titre lors de la déconnexion d'un hôte distant, ou dois-je m'en tenir à l'ouverture d'un nouvel onglet chaque fois que je me déconnecte, pour réinitialiser le titre ?

0 votes

Les noms des terminaux sont également réinitialisés lorsque vous quittez npm

23voto

s01ipsist Points 336

Ajouter un PROMPT_COMMAND à votre .bash_profile

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

El PROMPT_COMMAND est exécuté à chaque fois que l'invite est affichée.

Veuillez noter que nous incluons l'existant PROMPT_COMMAND de sorte que nous ne perdons pas les paramètres existants (c.-à-d. update_terminal_cwd ).

4 votes

Veillez à ajouter votre code à PROMPT_COMMAND plutôt que de le remplacer, par exemple, PROMPT_COMMAND="<your code>; $PROMPT_COMMAND" ; sinon, vous désactiverez d'autres fonctionnalités qui utilisent cette variable. Par exemple, /etc/bashrc l'utilise pour définir le répertoire de travail actuel du terminal afin que celui-ci puisse l'afficher et l'utiliser pour diverses opérations.

0 votes

@ChrisPage Est-ce que le nouveau code doit venir avant $PROMPT_COMMAND pour que l'autre fonctionnalité soit préservée ?

0 votes

Pourquoi ne pas le mettre directement sur PS1 ?

7voto

PiersyP Points 310

Pour que la solution de @s01ipsist fonctionne avec ZSH (nouveau shell sur MacOS), vous pouvez ajouter ceci à ~/.zshrc :

export PROMPT_COMMAND="echo -ne '\033]0;${USER}@${HOST}\007';$PROMPT_COMMAND"
precmd() { eval "$PROMPT_COMMAND" }

2voto

zapstar Points 111

Voici ce qu'il faut coller dans votre .bash_profile fichier. Cette méthode est beaucoup plus propre et adopte l'approche que fait Apple lorsqu'il met à jour votre répertoire de travail actuel. La vérification de la variable update_term_title est déjà présent n'est pas vraiment nécessaire (puisque personne n'appelle bash -- login ), mais juste présent en tant que gardien.

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

1 votes

Lol, je me demandais qui avait écrit cette réponse... il s'avère que c'est moi :-)

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X