Next: , Previous: Compilation Mode, Up: Building


21.4 コンパイルのためのサブシェル

Emacsはシェルを使ってコンパイルコマンドを実行しますが、 非対話的なシェルになるようなオプションを指定します。 つまり、シェルはプロンプトを出さずに実行を開始するはずです。 ‘*compilation*’バッファに通常のシェルプロンプトがぶざまに現れる場合は、 個人のシェル初期化ファイルでプロンプトを無条件に設定していることを 意味します。 (シェル初期化ファイルの名前は、.bashrc.profile.cshrc.shrcなどだが、 使っているシェルによってさまざまな場合がある。) シェル初期化ファイルでは、プロンプトがすでに設定されているときだけ プロンプトを再設定するべきです。 たとえば、‘csh’では以下のようにします。

     if ($?prompt) set prompt = ...

bashでは以下のようにします。

     if [ "${PS1+set}" = set ]
     then PS1=...
     fi

読者のシェル初期化ファイルには、対話的なシェルに対してだけ 本来は設定するべきことがまだあるかもしれません。 同じ方法を用いて、それらを状況に応じて設定するようにできます。

MS-DOS『オペレーティングシステム』では、 非同期のサブプロセスを使えません。 対応策として、MS-DOSではM-x compileは コンパイルコマンドを同期的に実行します。 その結果、Emacs上で他の作業を行うには、 コンパイルコマンドの終了を待つ必要があります。 See MS-DOS