web-dev-qa-db-ja.com

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

私の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
9
Ankur Agarwal

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

$ stty sane

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

$ stty -a

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

$ stty intr ^v^c
9
Soren

壊れたように見えるのでgnome-terminal設定を使用して、デフォルトに戻すことができます。

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

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

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

6
rozcietrzewiacz

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

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

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

この変更は、allgnome-terminalsですぐに有効になることに注意してください。

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

4
Hoe-Kit

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

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

3
Bruce Ediger