Ctrl + Cがgnome-terminalで機能しない


9

私のLinuxホストでは、Ctrl+ Cは機能していないようで、機能させるための手順がわかりません。Ubuntu 10.04とbash 4.1.5(1)を使用していて、Gnomeターミナルで作業しています。

このスクリプトの実行中にCtrl+ を押してCも、スクリプトが終了しませんでした。

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

2
「機能しない」とはどういう意味ですか?そのキーをどこで押しましたか、何が起こると予想されましたか、実際に何が起こりましたか
Gilles「SO-邪悪なことをやめ

おそらく、Ctrl-Cが機能しないと考える理由の詳細を説明できます-たとえば、(失敗した)NFS応答を待機しているプロセスがハングしていることが多いため、割り込みできない特定のカーネルレベルのものがあります
ソレン

回答を更新しました。基本的にはCtrl Cは、私はCtrlキーC.を行う上で終了させるべきだと思うことを、スクリプトを終了していない
はAnkur Agarwalさん

stty -a出力が含まれていますかintr=^C?スクリプトをどのように実行しますか?
ステファン・ヒメネス

1
質問をクロスポストしないでください。質問するサイトを選択し、そのサイトに合わせて調整します。
nhinkle 2011

回答:


9

これをやってみてください

$ stty sane

それが問題を修正するかどうかを確認し、また、intrが正しく設定されているかどうかを確認してください

$ stty -a

intr^ C以外の値に設定されていることがわかった場合は、次のように入力して修正することもできます

$ stty intr ^v^c

これは助けにはなりませんでした。stty -aは "intr = ^ C"(引用符なし)を示します
Ankur Agarwal

^文字を入力するか、Ctrlキーを押す必要がありますか?
Ankur Agarwal 2011

Ctrlキーを押すだけです(^はCtrl-の略です)
Soren

おそらく、Ctrl-Cが機能しないと考える理由の詳細を説明できます-たとえば、(失敗した)NFS応答を待機しているプロセスがハングしていることが多いため、割り込みできない特定のカーネルレベルのものがあります
ソレン

質問に詳細を追加しました。基本的にはCtrl Cは、私はCtrlキーC.に終了することを期待し、私が実行していることをスクリプト、終了していない
はAnkur Agarwalさん

6

gnome-terminal構成が壊れているように見えるため、次のコマンドを使用してデフォルトに戻すことができます

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

(効果を確認するには、ターミナルを再起動する必要があります。)

その後すべてが問題なければ、を実行しrm -rf .gconf/apps/gnome-terminal-BROKENます。


4

のデフォルト設定は、Windowsのコピーアンドペースト動作をエミュレートgnome-terminalするためにCtrl-CおよびCtrl-Vキーをバインドします。これはバグではなく機能であることを意味していました:)

これを無効にするには、gnome-terminalで、

  1. 案内する Menubar -> Edit -> Keyboard Shortcuts
  2. が表示されるまで、[ショートカットキー]列の[ Ctrl+ ]をクリックしCますNew Accelerator...
  3. BackspaceまたはDeleteキーを押してキーバインドを無効にします
  4. Disabled[ショートカットキー]列に表示されることを確認します。

この変更はすべての gnomeターミナルですぐに有効になること注意してください。

ヒント:gnome-terminal --show-menubarメニューバーが表示されていない場合は、gnome-terminalに強制的にメニューバーを表示させます。


3

ここで推測してみましょう。Ctrl-Cは機能ps -eしますが、スクリプトの残りの部分に比べて実行に時間がかかるため、SIGINTを「ps」プロセスに送信するだけです。"ps"は終了し、スクリプトはループコードを介して別の反復を実行します。

sleep 10bashウィンドウでaを実行します。実行中は、Ctrlキーを押しながらCキーを押します。それが機能するかどうかを確認します。含まれている場合は、元のスクリプトを実行し、Ctrlキーを押しながらCキーを複数回押します。遅かれ早かれ、幸運なことになり、スクリプトを解釈するbashプロセスはSIGINTを取得します。


スリープ10のCtrl Cも機能しません。
Ankur Agarwal 2011

2
したがって、gnome-terminal Ctrl Cを使用しても機能しますが、Ctrl cは機能しません。したがって、Ctrl + Shift + cを実行すると、スリープ10を中断することができます。しかし、Ctrl + cを実行しても機能しません。なぜ大文字と小文字が区別されるのですか。
Ankur Agarwal 2011
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.