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