2006-06-23

.emacs_SHELL という shell の設定ファイル

Emacs では、M-x shell として Emacs 内にシェルを起ち上げることができる。いわゆるサブシェル (sub shell) というやつ。

Emacs 内で shell を起ち上げるメリットは...

  • ターミナル (kterm とか xterm とか) にフォーカスを移動させなくて済むこと (ウィンドウの数が多いとターミナルを選ぶのも一苦労だよね)
  • カレント・ディレクトリーが、M-x shell を実行したバッファ (ファイル) と同じディレクトリーになること (ターミナルで cd する手間が省ける)
  • shell の実行結果のコピペや検索が楽 (プログラムの動作例のドキュメントを作る場合なんかに便利)

といった所が挙げられやうか。

shell のカスタマイズ

M-x shell で使われる shell は、変数 explicit-shell-file-name で設定される。この変数が設定されていない場合は、環境変数 ESHELL の値が、それも設定されていない場合、環境変数 SHELL の値が使われる。難しく聞こえるけど、Emacs を起動した時に使ってた shell と同じものが使われるという理解でいいと思う。

さて、bash には .bashrc、tcsh には .cshrc、zsh には .zshrc といった shell 用の設定ファイルがある。M-x shell で呼び出す sub shell もそれらの設定ファイルを読み込む。けれど、Emacs で読み込む時だけ別に設定を追加したい場合どうすればいいか?

その答えが

~/.emacs_SHELLNAME

というファイル。

例えば、bash を sub shell として使うのであれば、~/.emacs_bash というファイルに追加設定を書いておく。

Emacs 22 では

更に、Emacs 22 からは

~/.emacs.d/.emacs_SHELLNAME

に設定ファイルを置いても OK になった。

あとがき

「.emacs_SHELL って何だらう」との疑問に、コメント欄で教えて下さった hirose31 さん、ありがとうございます。

No comments:

Post a Comment