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.