tmux
por si só inicia uma nova sessão, tmux attach
anexa a uma sessão anterior.
tmux attach
falhará se não houver sessão anterior.
Esses dois fatos se combinam para fornecer a seguinte solução:
tmux attach || tmux
Ele tenta tmux attach
primeiro e, se falhar, executa tmux
sozinho. Isso atribui à sessão anterior, se houver, e inicia uma nova sessão, se não houver. Então essa é a primeira parte.
Para a segunda parte, você quer que este código seja executado toda vez que você efetuar login via SSH. Então você precisa verificar:
- se é um shell de login. Isso pode ser feito usando
shopt -q login_shell
. - se você está conectado via SSH. Isso pode ser feito verificando se
$SSH_CLIENT
está definido, por exemplo,[ -n "$SSH_CLIENT" ]
.
Então você deve adicionar isso ao final do seu .bashrc
:
if shopt -q login_shell && [ -n "$SSH_CLIENT" ]; then
tmux attach || tmux
fi