Cygwin bash 3.2.51 で W32 GNU Emacs 24.1.50.1 を使用しています。この組み合わせが非常に厄介であることはわかっています ( EmacsWikiとCygwin の一覧を参照してください)。しかし、私が今解決したい問題はCygwinに限ったことではありません。MinGWでも問題が発生しました。したがって、問題は次のとおりです。
Emacs では、変数を適切M-x shell
に設定した場合に、シェルを起動します (たとえば、こちらを参照)。次に、stdin 入力を期待するコマンドを発行します。キャンセルするには、通常、Ctrl-Dを 1 回入力すると、シェル プロンプトに戻ります。W32 emacs では、これを行うと (または明示的に発行した場合でも)、 cat コマンドが終了し、bash シェルも終了します。shell-file-name
explicit-bash-args
cat
cat
M-x comint-send-eof
環境変数をたとえば 5 に設定して、bash の「回復力」を高めようとしましたIGNOREEOF
が、Ctrl-D を 1 回実行すると、次の出力が得られます。
$ Use "exit" to leave the shell.
$ Use "exit" to leave the shell.
$ Use "exit" to leave the shell.
$ Use "exit" to leave the shell.
$ Use "exit" to leave the shell.
$ exit
Process shell finished
そしてもちろん、bash は再び終了しました。この問題は、シェルが W32 emacs で実行されている場合にのみ発生します。Cygwin tty ウィンドウを介した Cygwin bash と、独自の MinTTY を介した MinGW bash は正常に動作します。
cat
W32 Emacs でこれが発生するのはなぜですか? また、bash シェルを終了せずに W32 Emacs を使用しているときに、実行中のサブコマンド (例: ) を終了するにはどうすればよいですか?