私の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
これをやってみてください
$ stty sane
それが問題を修正するかどうかを確認し、また、intrが正しく設定されているかどうかを確認してください
$ stty -a
intr
が^ C以外の値に設定されている場合は、次のように入力して修正することもできます
$ stty intr ^v^c
壊れたように見えるのでgnome-terminal
設定を使用して、デフォルトに戻すことができます。
mv .gconf/apps/gnome-terminal{,-BROKEN}
(効果を確認するには、ターミナルを再起動する必要があります。)
その後すべてが問題なければ、rm -rf .gconf/apps/gnome-terminal-BROKEN
。
gnome-terminal
のデフォルト設定は、Ctrl-C
およびCtrl-V
キーをバインドして、Windowsのコピーアンドペースト動作をエミュレートします。これはバグではなく機能であることを意味していました:)
これを無効にするには、gnome-terminalで、
Menubar -> Edit -> Keyboard Shortcuts
に移動しますNew Accelerator...
が表示されるまでクリックします。Disabled
が[ショートカットキー]列に表示されていることを確認します。この変更は、allgnome-terminalsですぐに有効になることに注意してください。
ヒント:gnome-terminal --show-menubar
は、gnome-terminalが表示されていない場合、強制的にメニューバーを表示します。
ここで推測してみましょう。Ctrl-Cは機能しますが、ps -e
は、残りのスクリプトに比べて実行に長い時間がかかります。SIGINTを "ps"プロセスに送信するだけです。 "ps"は終了し、スクリプトはループコードの別の反復ですぐにピックアップします。
sleep 10
bashウィンドウで、実行中にControl-Cを押します。それが機能するかどうかを確認します。含まれている場合は、元のスクリプトを実行し、Ctrlキーを押しながらCキーを複数回押します。遅かれ早かれ、幸運なことになり、スクリプトを解釈するbashプロセスはSIGINTを取得します。