emacs でシェルの環境変数を全部読み込む
emacs で普段使っているシェルの環境変数を引き継ぎたい。
exec-path-from-shell を使うのがいいらしいが、 使いたい環境変数が増えるたびに el ファイルに追加していくのはめんどくさい。
ちょっと古いやり方かもしれないが、 実況中のシェルの環境変数を全部 el ファイルに書きだすようなスクリプトを書いた。 .emacs.d を git で管理していて github などにあげている場合は、 shellenv.el を .gitignore に追加しておかないとたぶん危ない。
https://github.com/handlename/dot-emacs/blob/master/scripts/init_shellenv.pl
実行すると、
$ perl scripts/init_shellenv.pl
こういうファイルが作られる。
$ cat shellenv.el (setenv "TERM" "screen") (setenv "PLENV_ROOT" "/Users/handle/.plenv") (setenv "PLENV_VERSION" "5.18.1") (setenv "HOME" "/Users/handle") (setenv "GOPATH" "/Users/handle") ...
で、 init.el
とかに
(load-file (concat user-emacs-directory "/shellenv.el"))
と書いておけば全部 set される。
元ネタはこれ。