Esses dois não são iguais.
exec
é um shell embutido que executará o comando fornecido ssh localhost
neste caso com a substituição do shell atual pelo comando.
Ao fazer o simples ssh localhost
você está executando o comando geral ssh
, não há sinos e assobios associados.
O efeito será aparente quando você for logout
da sessão ssh
:
-
No caso de
exec ssh localhost
, o shell será substituído porssh lcoalhost
, depois dossh
você obterá um shell como de costume. Ao sair da sessão de shellssh
, por exemplo, porlogout
ouexit
você não voltará ao shell pai, ou seja, a partir do shell que você executouexec ssh localhost
, como já foi substituído. Então, você simplesmente perderá essa guia / janela do terminal. -
Por outro lado, para
ssh localhost
, como você não está substituindo o shell pai porssh localhost
, então após o logout você voltará ao shell pai, isto é, o shell do chamador.