进一步阅读

进一步阅读

我想知道如何映射 ksh 中的键Ctrl-D来退出 shell,就像在 bash shell 中一样。

对 ksh 中的键绑定不太熟悉。

编辑

请参阅下面我的评论。

$ echo $0
bash
$ exit    # I pressed Ctrl-D here, 'exit' string was placed and the shell exited

$> echo $0
ksh
$> Use 'exit' to leave ksh  # I pressed Ctrl-D here, Got this message and returned to the ksh prompt
$> echo $0
ksh
$> cat >> somefile
Some text
$>   # I pressed Ctrl-D here. So this key combination is taken as eof char for file, but not for exit.

那么,需要映射以退出 shell 吗CtrlD我怎么做?

答案1

Ctrl+ D(ASCII EOT)已经是映射到退出 shell,在viemacs模式下,如ksh93手册页所述。从你的脚本捕获来看,很明显是这样。

手册页还解释了其他人在这里评论的内容,即该键仅在该行为空时才具有此效果。 (这模仿了熟模式下生产线纪律的标准行为。)

您所缺少的(手册页也对此进行了解释)是您已ignoreeof设置该选项。因此,Korn Shell 在空行上看到了Ctrl+ D,并忽略了它,打印了您看到的消息,以解释在ignoreeof设置打开时您必须显式使用该exit命令。

因此,请忘记stty并捕获处理程序,如另一个答案中所示;简单地说:

设置-o noignoreeof

进一步阅读

答案2

你想要的stty命令:查看 ^D 如何与 映射stty -a。您可以将其更改为其他内容stty eof char:删除“eof”设置stty eof undef


未经测试:您想阅读trapksh 手册页中的命令。您为信号设置一个处理程序可能就足够了EXIT

# warning: completely untested
exit_handler() { echo "exit"; exit; }
trap exit_handler EXIT

相关内容