Por que alguém teria que sair duas vezes ao sair de uma conexão de ssh bash? [fechadas]

0

Quando conectado via SSH, uma máquina requer que eu saia duas vezes antes de retornar ao shell do computador local; existe uma razão pela qual isso acontece, não parece que deveria funcionar dessa maneira.

    
por leeand00 17.09.2018 / 07:42

1 resposta

2

Isso aconteceria se você iniciasse um novo shell interativo sobre o iniciado por ssh . Um novo shell seria iniciado se você, por exemplo, executasse screen ou tmux (ou bash ou algum outro shell para essa matéria) dos arquivos de inicialização do shell (por exemplo, ~/.bash_profile for bash ) ou de algum arquivo de inicialização do shell em todo o sistema em /etc .

A partir de lá, screen ou tmux suspenderia temporariamente a inicialização do shell inicial enquanto o outro processo estivesse em execução. Quando você sair de screen ou tmux , a sessão inicial do shell fornecerá um novo prompt para o qual você deve sair separadamente.

Para contornar isso, em vez de usar apenas screen ou tmux , use exec screen ou exec tmux . Isso substituirá o shell atual pelo processo apropriado.

Se você fizer dessa maneira, certifique-se de que nenhuma configuração adicional seja necessária após a chamada para exec , já que essa chamada nunca retornará o controle para o script de inicialização (a menos que ocorra um erro na execução de exec ). / p>

Este é um exemplo do meu próprio arquivo ~/.profile (não uso bash ) para iniciar tmux quando eu fizer login:

if [ -z "$TMUX" ] && [ -z "$DISPLAY" ]; then
    if tmux has-session; then
        exec tmux attach-session
    else
        exec tmux
    fi
fi

Isso substituiria o shell atual por tmux se a sessão do shell já não estivesse em execução em uma tmux session ( TMUX seria definida se estivesse) e também se não estivéssemos em um ambiente gráfico ( DISPLAY seria definido se fôssemos). Se houver uma sessão tmux , esta sessão será anexada, caso contrário, uma nova será iniciada.

    
por 17.09.2018 / 10:06

Tags