Come resettare il titolo di Windows / Tab di iTerm2 quando si disconnette dall'host remoto? [duplicare]

0

Ho il mio bash_profile sul mio Mac e i computer remoti che mi collego alla configurazione per inserire automaticamente il nome host nell'area del titolo della finestra (o della scheda).

Una shell bash sul mio computer locale

Nomehostremoto"Socrates"; anche una shell bash.

Ilproblemaèchequandoesco(edisconnetto)dall'hostremoto,iltitolodellafinestrarimaneconilnomehostdeltelecomando.Quindi,ineffetti,sononellashellbashApplelocaleconilnomeremoto.Perrisolvereilproblema,eseguounadelleseguentioperazioni:

  • chiudilafinestraeaprineunanuova
  • ri-sorgenteil.bash_profile(.~/.bash_profile)
  • creaunanuovasubshellimmettendoilcomandobash(nondesiderabileaffatto)

Comepossofarloautomaticamenteinmodochequandoescodaunashellremota,iltitoloritornialnomehostoriginale,quindisoaqualehostsonoeffettivamenteconnesso?

Nota,ladomandaprecedente, Terminal visualizza la directory della precedente posizione SSH anche quando non è in esecuzione SSH didn ' t affrontare adeguatamente il problema perché la soluzione era modificare .bash_logoff che funzionava solo per le shell di login.

    
posta Allan 10.11.2018 - 05:05
fonte

1 risposta

0

La soluzione a questo problema è risolta usando i codici di controllo dei terminali (Esc 22 e 23) e posizionando quattro semplici linee in .bashrc dell'host remoto:

# ~/.bashrc
#
# Set the Terminal Title

echo -ne "3[22;0t"                     #Save Title on Stack
echo -ne "3]0;${HOSTNAME}
# run a .bashrc file if it exists.

test -f ~/.bashrc && . ~/.bashrc
7" #Set New Title trap 'echo -ne "3[23;0t"' EXIT #Reset Title Window

Come funziona

Usando i Codici di evasione dei terminali 22 e 23 , possiamo salvare e recuperare il titolo originale. La funzione trap ( man bash ) eseguirà un comando quando viene ricevuto un segnale; in questo caso all'uscita.

Ora, quando esco (termino) l'host remoto, il titolo ritorna al nome host corretto.

Perché .bashrc?

Voglio averlo a disposizione se accedo all'host da una macchina remota (la più comune) o quando sono locale ad essa. .bash_profile viene letto per una shell di login interattiva e .bashrc viene letto per una shell interattiva, non di accesso (locale) avviata.

Per garantire che questo sia uguale per entrambe le condizioni, includo quanto segue nel mio .bash_profile :

# ~/.bashrc
#
# Set the Terminal Title

echo -ne "3[22;0t"                     #Save Title on Stack
echo -ne "3]0;${HOSTNAME}
# run a .bashrc file if it exists.

test -f ~/.bashrc && . ~/.bashrc
7" #Set New Title trap 'echo -ne "3[23;0t"' EXIT #Reset Title Window
    
risposta data 10.11.2018 - 05:05
fonte

Leggi altre domande sui tag