Título da guia Terminal após a sessão SSH


11

No Mac OS X (eu estou no 10.6.8, embora eu acredite que outras versões sejam iguais), ssh'ing em uma máquina remota altera o título da guia atual no Terminal. Irritantemente, quando eu me desconecto da máquina remota, explicitamente com exitou através de um tempo limite, o título da guia não volta ao que era.

Em uma base quase diária, isso quase me leva a sofrer um ataque cardíaco, quando estou digitando, executando um comando ou outro, apenas para ver pelo canto do olho que a guia ainda se chama user @ remotehost. Eu sou um usuário cauteloso que sempre tende a pwdetc para confirmar minha localização antes de fazer qualquer coisa, mas ainda me pega em um momento de pânico quando estou fazendo DROP DATABASE xe vejo o nome do host remoto na guia.

Para encurtar a história, existe uma maneira de reverter esse título ao me desconectar de um host remoto, ou tenho que continuar abrindo uma nova guia toda vez que me desconecto, para redefinir o título?


nomes de terminal também redefinir quando você sairnpm
Awesome_girl

Respostas:


20

Adicione um PROMPT_COMMANDao seu .bash_profile

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

O PROMPT_COMMANDé executado toda vez que o prompt é exibido.

Observe que incluímos a PROMPT_COMMANDvariável de ambiente existente , para que não percam nenhuma configuração existente (ou seja update_terminal_cwd).


2
Certifique-se de adicionar seu código ao PROMPT_COMMAND em vez de substituí-lo, por exemplo PROMPT_COMMAND="<your code>; $PROMPT_COMMAND"; caso contrário, você desabilitará outras funcionalidades que usam essa variável. Por exemplo, o / etc / bashrc usa-o para definir o diretório de trabalho atual do terminal, para que o Terminal possa exibi-lo e usá-lo em várias operações.
Chris Página

@ChrisPage O novo código precisa vir antes $PROMPT_COMMANDpara que a outra funcionalidade seja preservada?
reve_etrange

Por que não colocá-lo diretamente no PS1?
Yongwei Wu

é assim que você edita o .bash_profile? sublime $HOME/.bash_profile?
precisa

@Awesome_girl Verifique se o sublcomando está instalado e edite o arquivo no seu terminal usando subl ~/.bash_profile. Se esse comando não existir, siga este procedimento
XtraSimplicity

1

Aqui está o que você precisará colar no seu .bash_profilearquivo. Isso é muito mais limpo e adota a abordagem que a Apple faz quando atualiza seu diretório de trabalho atual. A verificação da variável update_term_titlejá está presente não é realmente necessária (como ninguém chama bash -- login), mas apenas está presente como um guarda.

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
Lol, eu me perguntava quem escreveu esta resposta ... Acontece que ele estava me :-)
zapstar
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.