当 CTRL-C 不起作用时如何使其在命令行中起作用?

当 CTRL-C 不起作用时如何使其在命令行中起作用?

我正在努力解决在特定环境 shell 命令行(CentOS 7 / Windows 主机的 Vagrant 来宾)中无法使用 CTRL+C 的问题。我在那里使用 bash。操作系统似乎并不重要。

运行示例sleep 1000并按 ctrl-c:

$ sleep 1000
^C^C^C

所以,只要输入 ^C 就可以了。

^C必然会发生中断。

$ stty -a
intr = ^C; ... 

如何制作这行得通?

在下面的帖子中,我受到启发去修复它,答案解释了很多,但没有给出如何使其工作的简单答案。
为什么 Ctrl-C 不起作用?
看来这是一件简单的事情,我正在努力解决。

答案1

正如中提到的我们如何在bash中将信号陷阱设置为SIG_IGN和SIG_DFL?简单的解决方案是:

trap - INT

~/.bashrc例如,只需将此代码添加到bash 中即可。

我决定不去寻找原因的根源,而只是解决它。

另一个有趣的帖子: 当 CTRL+C 时删除 ^C

答案2

听起来可能是一个键映射问题。

在 shell 提示符下,键入:

stty sane

然后尝试使用 CTRL-C 来停止命令。如果仍然不起作用,请添加以下输出:

stty -a

对于你的问题。该stty -a命令将列出您当前的终端线路设置。感兴趣的项目称为intr。如果intr设置不正确,CTRL-C 将不起作用。

如果intr设置不正确,您可以尝试使用以下命令重置:

stty intr CTRL-V-C

这意味着您键入stty intr,然后键入一个空格,然后按住 CTRL 键并按 ,然后按v,然后c它们之间不包含空格或其他字符。

之后,尝试再次使用 CTRL-C 停止命令并查看结果。

相关内容