Ctrl + C在gnome终端中不起作用


9

在我的Linux主机上,Ctrl+ C似乎不起作用,并且我不知道如何继续使其工作。我在bash 4.1.5(1)中使用Ubuntu 10.04,并在Gnome终端中工作。

当我在脚本运行时按Ctrl+ C时,并没有导致它退出。

#!/bin/bash
for i in `seq 500`
do
        ps -e > /dev/null
        echo $i
done

2
您所说的“无效”是什么意思?您在哪里按了该键,您期望发生什么,实际发生了什么?
吉尔(Gilles)'所以

也许您可以描述为什么您认为Ctrl-C不起作用的更多详细信息-某些内核级别的内容是不可中断的-例如,挂起等待(失败的)NFS答案的进程通常不能被中断
索伦

我更新了答案。基本上按Ctrlç并没有终止的脚本,我认为应该做按Ctrl C.被终止
ANKUR阿加瓦尔

stty -a输出是否包含intr=^C?您如何运行脚本?
斯蒂芬·吉梅内斯

1
请不要交叉发布问题。选择您要询问的站点,然后将其定制为该站点。
nhinkle 2011年

Answers:


9

尝试做这个

$ stty sane

并查看它是否可以解决问题,还请使用以下命令检查是否正确设置了intr

$ stty -a

如果发现intr设置为不同于^ C的值,则还可以通过键入

$ stty intr ^v^c

这没有帮助。stty -a显示“ intr = ^ C”(不带引号)
Ankur Agarwal

我是否必须输入^字符或按Ctrl键?
Ankur Agarwal

您只需要按Ctrl键(^是Ctrl-的缩写)
Soren

也许您可以描述为什么您认为Ctrl-C不起作用的更多详细信息-某些内核级别的内容是不可中断的-例如,挂起等待(失败的)NFS答案的进程通常不能被中断
索伦

我在问题中添加了更多详细信息。基本上按Ctrl C不会终止的脚本,我运行,这是我期望能够在按Ctrl C.终止
ANKUR阿加瓦尔

6

由于它看起来像是损坏的gnome-terminal配置,因此您可以尝试使用以下方法恢复默认设置:

mv .gconf/apps/gnome-terminal{,-BROKEN}

(您需要重新启动终端才能看到效果。)

如果之后一切正常,请执行rm -rf .gconf/apps/gnome-terminal-BROKEN


4

中的默认设置gnome-terminal绑定Ctrl-CCtrl-V键,以模拟Windows的复制和粘贴行为。这本来是一个功能,而不是一个错误:)

要禁用此功能,请在gnome终端上,

  1. 导航 Menubar -> Edit -> Keyboard Shortcuts
  2. 单击“快捷键”列中的Ctrl+ C,直到看到New Accelerator...
  3. BackspaceDelete键以禁用键绑定
  4. 验证Disabled现在是否出现在“快捷键”列中。

请注意,此更改将在所有 gnome终端上立即生效

提示:gnome-terminal --show-menubar如果未显示,将强制gnome-terminal显示菜单栏。


3

我将在这里进行猜测:Ctrl-C确实可以工作,但是由于ps -e相对于脚本的其余部分要花很长时间才能运行,因此您要做的只是将SIGINT发送给“ ps”进程。“ ps”退出,脚本通过循环代码进行另一次迭代。

sleep 10在您的bash窗口中运行时,按住a 并按住C即可。看看是否可行。如果是这样,请运行您的原始脚本,然后多次对其进行Control-C控制。迟早您会很幸运,并且解释脚本的bash进程将获得SIGINT。


睡眠10上的Ctrl C也不起作用。
Ankur Agarwal

2
因此,使用gnome-terminal Ctrl C可以,但是Ctrl c则不能。因此,如果我按Ctrl + Shift + c来中断睡眠10,它将起作用。但是执行Ctrl + c无效。为什么区分大小写。
Ankur Agarwal
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.