我读了man exec
输出,但不明白这两个命令之间的区别:exec ssh localhost
和ssh localhost
。我测试了这两个命令,没有发现任何区别。有什么区别吗?
答案1
这两者并不相同。
exec
是一个内置的 shell,它将ssh localhost
在这种情况下执行给定的命令,并用该命令替换当前 shell。
在执行简单操作时,ssh localhost
您正在执行一般ssh
命令,没有任何相关的花哨操作。
logout
当您进行以下会话时,效果将会很明显ssh
:
如果
exec ssh localhost
shell 将被 替换ssh lcoalhost
,成功后ssh
您将像往常一样获得一个 shell。在退出ssh
shell 会话时(例如通过logout
或 ),exit
您将无法返回父级 shell,即从您执行的 shell 返回,因为该 shellexec ssh localhost
已被替换。因此,您将丢失此终端选项卡/窗口。另一方面,对于
ssh localhost
,由于您没有用替换父shell,ssh localhost
因此退出后,您将返回到父shell,即调用者shell。