'exec ssh localhost' 和 'ssh localhost' 之间有什么区别?

'exec ssh localhost' 和 'ssh localhost' 之间有什么区别?

我读了man exec输出,但不明白这两个命令之间的区别:exec ssh localhostssh localhost。我测试了这两个命令,没有发现任何区别。有什么区别吗?

答案1

这两者并不相同。

exec是一个内置的 shell,它将ssh localhost在这种情况下执行给定的命令,并用该命令替换当前 shell。

在执行简单操作时,ssh localhost您正在执行一般ssh命令,没有任何相关的花哨操作。

logout当您进行以下会话时,效果将会很明显ssh

  • 如果exec ssh localhostshell 将被 替换ssh lcoalhost,成功后ssh您将像往常一样获得一个 shell。在退出sshshell 会话时(例如通过logout或 ),exit您将无法返回父级 shell,即从您执行的 shell 返回,因为该 shellexec ssh localhost已被替换。因此,您将丢失此终端选项卡/窗口。

  • 另一方面,对于ssh localhost,由于您没有用替换父shell,ssh localhost因此退出后,您将返回到父shell,即调用者shell。

相关内容