使用可以正确关闭会话的快捷方式(而不是键入 exit)退出 shell

使用可以正确关闭会话的快捷方式(而不是键入 exit)退出 shell

我对每天使用的许多 ssh 会话使用 ProxyJump 命令,并且还在这些会话上频繁切换用户,并且必须exit连续输入 3 或 4 次并不是太有趣。

我知道newline+ ~+.终止 ssh 会话,我仍然需要检查它是否像exit意愿一样友好地终止它,但是如何使用单个命令或快捷方式退出当前 shell 中的所有会话,例如输入exit3 或 4 次就我而言,这变成了一次性的事情?

答案1

Ctrl-D在许多情况下将退出外壳。它比打字更快exit Enter。它仍然不是终止一切的单一命令,但按住Ctrl并点击D几次会更容易、更快。不确定这对您的用例有多大价值。

详细讨论了这里

答案2

~.实际上打字关闭所有“嵌套”连接到最深处的技巧。

只要您的所有 shell 都配置为将 SIGHUP 处理为优雅的死亡,它就会以您想要的友好退出来执行此操作。 Bash 默认这样做。您可以轻松地检查您的设置的友好退出,例如查看.bash_history更深层次会话的文件是否在 后正确更新~.,或者如果您将 bash-es 设置为在退出时不更新 .bash_history 那么您可以trap在EXIT 事件(或在您的~/.bash_logout)中,带有一个命令,该命令在某处写入一些内容,然后查看它是否被执行。

此外,我不确定“退出当前 shell 中的所有会话”是什么意思。每个交互式 bash 只是一个会话,您键入的命令始终只进入 ProxyJump 链的最深层 shell。如果您的意思是“当前 shell 中的后台作业”,则 bash 确实会在 ssh 守护进程收到 SIGHUP 时向其所有作业发送 SIGHUP ~.,因此,如果那些正在运行的作业对 SIGHUP 做出正确反应,则此类退出应该是完全友好的。

相关内容