Go to the first, previous, next, last section, table of contents.

下位レベルの対話的シェル

対話的にシェルを実行し,その入出力をEmacsバッファを通して行なうには M-x shellを使います.このコマンドは,バッファ`*shell*'を作成 (あるいは再使用)して,サブシェルを走らせ入力はそのバッファからとり,出力 はそのバッファへ挿入するようにします.つまり,すべてのサブシェルからの" 端末出力"は,そのバッファへ挿入され,サブシェルへの"端末入力"もすべて, そのバッファのテキストから取ることになります.サブシェルへ入力を送るには, バッファの最後へいって入力を打ちRETを押します.

Emacsはサブシェルの実行を待ちません.シェルの待機中あるいはコマンドの 実行中に,ウィンドウやバッファを切替えて別の編集ができます.サブシェルの 出力は,その出力をEmacsが処理する時間があくまで待っています.これは, Emacsがキーボード入力や経過時間を待っているときにはいつも起こっているこ とです.

サブシェルをいくつも走らせたいときには,M-x rename-bufferを使っ てバッファ`*shell*'の名前を変えてください.このあとM-x shell を入力すると,新しいサブシェルを伴った新しいシェルバッファ`*shell*' が作られます.このバッファの名前も変えれば,3つ目のシェルバッファも作れ ます.すべてのサブシェルは独立にかつ並行して走ります.

サブシェルをロードする際に用いるファイル名は,(それがnilでなけ れば)変数explicit-shell-file-nameの値です.さもなければ,環境変数 ESHELLが使われ,ESHELLもなければ,環境変数SHELLを使 います.ファイル名が相対的に指定されていれば,リストexec-pathの中 のディレクトリを探します(see section シングルシェルコマンド).

サブシェルが起動すると,`~/.emacs_shellname'ファイルがあれ ば,それが入力として送られます.ここでshellnameはロードされたシェ ルファイルの名前です.たとえば,cshを使っているときは,送られるファ イルは`~/.emacs_csh'です.

サブシェルに送られるcdpushdpopdコマンドは Emacsによって監視されています.これにより,Emacsは`*shell*'バッファ のデフォルトのディレクトリをシェルのワーキングディレクトリと同じにするこ とができます.送られる入力行を調べ,これらのコマンドを文字列で認識します. これらのコマンドにエイリアス(別名:alias)を使っている場合にも,Emacsがそれを認 識するようにできます.たとえば,変数shell-pushd-regexpの値がシェ ルコマンド行の先頭とマッチした場合は,その行はpushdコマンドとみな されます.`pushd'のエイリアスを使っているときは,この変数を変えてく ださい.同様に,変数shell-popd-regexpshell-cd-regexp`popd'`cd'を意味するコマンドを認識するのに使われます.これら のコマンドはシェルコマンド行の先頭に現われたときだけ認識されます.

Emacsが,`cd'`pushd'`popd'にあたるコマンドを実行し ようとしたときにエラーを起こしたら,変数 shell-set-directory-error-hooknilでない値が存在するとき, 引数なしでこれを評価します.


Go to the first, previous, next, last section, table of contents.