Origem por bashrc quando eu sair de uma sessão 'ssh'

1

Estou no OS X e estou usando o iTerm2.

Atualizei meu perfil do Bash em vários dos meus servidores para que, quando eu ssh neles, eu possa ver rapidamente nas abas em quais caixas eu estou. Quando saio de uma sessão ssh , o shell que iniciou a sessão ssh não origina ~/.bashrc novamente (que eu entendo como procedimento operacional normal), portanto, os títulos e as cores das guias persistem com os títulos e as cores eram da minha ssh sessão.

Normalmente, quando saio de uma sessão ssh , também saio do shell no computador que estou usando fisicamente também. Mas, por razões de consistência, eu gostaria de reverter minhas guias iterm2 para os títulos e cores apropriados para o shell que eles representam quando eu sair de uma sessão ssh .

Existe uma maneira de obter meu .bashrc quando eu sair de uma sessão ssh ?

Em todos os ~/.bash_profile , ~/.bashrc e ~/.bash_logout , tenho as seguintes linhas:

export PROMPT_COMMAND=''
echo -e "3];test machine name
export PROMPT_COMMAND=''
echo -e "3];test machine name%pre%7"
7"

Quando saio de uma sessão ssh , parece que nenhum desses arquivos Bash no meu diretório pessoal é originado para reimprimir o título da guia. Quando eu os mantenho manualmente com source ~/.bashrc , o título da guia é reimpresso bem. Então, a sintaxe não está errada.

    
por smilebomb 05.05.2016 / 22:00

2 respostas

1

Se você quiser que isso seja específico do comando, redefinir ssh (como mencionado em outra resposta) é provavelmente a melhor abordagem.

Se você realmente preferir algo mais geral, bash tem um PROMPT_COMMAND variável de shell que você pode definir para executar um comando (ou vários comandos) antes que o prompt do shell seja impresso, o que aconteceria logo após ssh (ou qualquer outro comando) retornar ao shell.

    
por 05.05.2016 / 22:34
2

Is there a way to source my .bashrc when I exit an ssh session?

Sim, defina uma função de shell:

ssh() { command ssh "$@"; source ~/.bashrc; }
    
por 05.05.2016 / 22:12