Deixe a sessão ssh remota saber sobre o tmux?

2

Suponha que eu execute uma sessão tmux na máquina A e a partir dela eu inicio um shell interativo via ssh para a máquina B.

Gostaria de alterar PS1 da máquina B para melhor atender ao uso de tmux ; por exemplo, eu incluiria coisas diferentes na string de título do XTerm.

Eu prefiro não editar as configurações da máquina B para sempre mostrar um prompt otimizado para o tmux. Às vezes, eu ssh para a máquina B de um terminal simples (não tmux ) e gostaria que ele usasse meu PS1 normal nesse caso.

Existe uma maneira padrão / aceita melhor de conseguir isso?

Tudo o que eu criei até agora foi definir AcceptEnviron no sshd config da máquina B e passar uma variável de sinal personalizada em ssh tempo de conexão.

    
por 9000 11.11.2013 / 21:27

1 resposta

1

Esta é uma maneira possível de fazer o que você está procurando:

O tmux define variáveis de ambiente nos shells que cria (exemplo $ TMUX, $ TMUX_PANE), é possível detectá-los e executar o comando ssh para informar sua sessão remota como o cliente foi iniciado, estamos analisando duas etapas.

Primeiro, detectando onde o ssh está sendo iniciado, isso pode ser feito em uma função, chamada 'ssh', por causa deste exemplo.

function ssh {
    if [ -z "$TMUX" ]; then
        # echo connecting from a plain terminal
        /usr/bin/ssh $1 # $1 is <user@hostname>
    else
        # echo connecting through tmux
        /usr/bin/ssh -t $1 bash --rcfile '~/.bashrc.tmux'
    fi
}   

Nota: as funções têm prioridade quando nomeadas da mesma forma que os programas em seu caminho, nomeando a função de maneira diferente se você quiser evitar confusão.

Segundo, para permitir que seu host remoto defina seu prompt de acordo, crie um arquivo ~ / .bashrc.tmux em seu host remoto, como

# contents of .bashrc.tmux, override PS1 to your liking
source .bashrc
PS1="[\d \t \u@\h:\w ] $ "

alternadamente, você pode definir uma variável de ambiente para ser usada em mais lugares

RUNNING_THRU_TMUX=true
source .bashrc
    
por 28.06.2015 / 04:44

Tags