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

tsu*_*ujp 13 shell bash session

我将 ProxyJump 命令用于我每天使用的许多 ssh 会话,并且还会在这些会话中切换用户很多,并且必须exit连续键入3 或 4 次并不太有趣。

我知道newline+ ~+.终止SSH会话,我还是要检查它是否终止它友好地像一个exit会,但你怎么退出当前shell的所有会话使用一个命令或快捷方式,使得打字exit3或4倍在我的情况下成为一次性的事情?

0xS*_*dog 30

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

这里详细讨论。

  • 小心使用 CTRL+D。在 bash 中,如果您在提示中输入了任何字符,按 CTRL+D 将像 Enter 一样执行它。换句话说,如果您不想执行它,请不要输入 `rm` 命令然后按 CTRL+D。我在 ksh 中没有看到这种行为。 (3认同)
  • Peschke 正在使用`vi` 终端输入绑定。 (3认同)
  • 下一站是 https://unix.stackexchange.com/a/182071/5132 ,之后是进一步阅读。(-: (2认同)
  • @Peschke 在我使用过的每个系统上,如果我输入了一些东西,Ctrl+D 什么也不做。我从来没有见过你描述的行为。 (2认同)

LL3*_*LL3 6

打字~.实际上可以关闭所有“嵌套”连接到最深的地方。

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

此外,我不确定“退出当前 shell 中的所有会话”是什么意思。每个交互式 bash 只是一个会话,您键入的命令始终只进入 ProxyJump 链的最深外壳。如果您的意思是“当前 shell 中的后台作业”,那么 bash 会在 ssh 守护程序在~..