![当 CTRL-C 不起作用时如何使其在命令行中起作用?](https://linux22.com/image/179984/%E5%BD%93%20CTRL-C%20%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8%E6%97%B6%E5%A6%82%E4%BD%95%E4%BD%BF%E5%85%B6%E5%9C%A8%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%B8%AD%E8%B5%B7%E4%BD%9C%E7%94%A8%EF%BC%9F.png)
我正在努力解决在特定环境 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 停止命令并查看结果。