2015年5月13日水曜日

Emacs.appから起動したEmacsでシェルの環境変数を引き継ぐ

Macを使い始めて最初に不便に感じたことの一つは,Emacs.appをGUIで起動したときに,PATHなどのシェルの環境変数が引き継がれないことでした.

最近はターミナルから起動するのが習慣づいているので余り気にならなくなりましたが,環境変数を引き継ぐことが出来るようなので設定してみました.参考にしたのはsyohexさんのブログ「Life is very short」の記事


です.

exec-path-from-shell.elというパッケージを用います.
まずpackage.elを用いるか,もしくはこちらからexec-path-from-shell.elをダウンロードして,これをemacsが読み込める場所に置いておきます.

設定は次のようにしました.
;;;ターミナル以外から起動したときも,パスなどのシェル環境変数を引き継ぐ
(when (memq window-system '(mac ns))
     (require 'exec-path-from-shell)
     (exec-path-from-shell-initialize)
     (let ((envs '("BIBINPUTS" "TEXINPUTS" "INDEXSTYLE")))
       (exec-path-from-shell-copy-envs envs))
     )
ここでは,パス以外のシェル環境変数としてLaTeXで使うBIBINPUTSとTEXINPUTS, INDEXSTYLEの3つをenvsというリストにして,exec-path-from-shell-copy-envsという変数に設定しています.これでexec-path-from-shell-copy-envsに設定したシェルの環境変数も一緒に引き継いでくれるようになりました.

あとはQuicsilverでEmacs.appにキーボードショートカットを割り当てて,ターミナルなしで起動出来るようにしました.最近外付けSSDにUbuntu 15.04をインストールしたのですが,UbuntuでもEmacsをGUIから起動するとパスなどが引き継がれなくなってしまったようです.同様の方法を試してみたいと思います.