Titolo scheda terminale dopo la sessione SSH

10

In Mac OS X (I'm on 10.6.8, anche se credo che le altre versioni siano le stesse) ssh'ing in una macchina remota cambia il titolo della scheda corrente in Terminal. Fastidiosamente, quando mi disconnetto dalla macchina remota, esplicitamente con exit o tramite un timeout, il titolo della scheda non torna a quello che era.

Quasi quotidianamente questo mi fa quasi subire un attacco di cuore, quando sto digitando via eseguendo qualche comando o altro, solo per vedere con la coda dell'occhio che il tab è ancora chiamato user @ remotehost. Sono un utente prudente che tende sempre a pwd ecc per confermare la mia posizione prima di fare qualsiasi cosa, eppure mi cattura ancora in un momento di panico quando sto facendo DROP DATABASE x e vedo il nome dell'host remoto nella scheda .

Per farla breve, c'è un modo per ripristinare questo titolo quando si disconnette da un host remoto o devo aprire una nuova scheda ogni volta che si disconnette, per ripristinare il titolo?

    
posta Peter O'Callaghan 27.02.2013 - 11:15
fonte

2 risposte

19

Aggiungi un PROMPT_COMMAND al tuo .bash_profile

export PROMPT_COMMAND="echo -ne '3]0;${USER}@${HOSTNAME}
export PROMPT_COMMAND="echo -ne '3]0;${USER}@${HOSTNAME}%pre%7';$PROMPT_COMMAND"
7';$PROMPT_COMMAND"

Il PROMPT_COMMAND viene eseguito ogni volta che viene visualizzato il prompt.

Tieni presente che includiamo la variabile di ambiente PROMPT_COMMAND esistente, in modo da non perdere alcuna impostazione esistente (ad esempio update_terminal_cwd ).

    
risposta data 12.04.2013 - 03:35
fonte
1

Ecco cosa dovrai incollare nel tuo file .bash_profile . Questo è molto più pulito e prende l'approccio che cosa fa Apple quando aggiorna la tua attuale directory di lavoro. Il controllo per la variabile update_term_title è già presente non è realmente necessario (dato che nessuno chiama bash -- login ), ma è solo presente come 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 "3]0;${USER}@${HOSTNAME%%.*}
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 "3]0;${USER}@${HOSTNAME%%.*}%pre%7"
        # Or ${HOSTNAME} if short host names aren't your taste
        # Or echo -ne "3]0;%pre%7" 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
7" # Or ${HOSTNAME} if short host names aren't your taste # Or echo -ne "3]0;%pre%7" 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
    
risposta data 02.10.2017 - 09:39
fonte

Leggi altre domande sui tag