環境変数を設定する elispの生成
Emacsにシェルで使っている環境変数を設定したい。
主に perlbrew関連なんですけど。シェルから Emacsを起動したらそれで
解決なんですけど、どうもシェルから起動すると意味もないのに
ミニバッファにフォーカスが移るということが多発しました。
なので 環境変数の設定を行う elispを
自動生成して、それを loadするという形にしました。
#!/usr/bin/env perl use strict; use warnings; my $tmpl = qq{(setenv "#KEY#" "#VAL#")}; for my $key (@ARGV) { my $env = $tmpl; next unless exists $ENV{$key}; my $val = $ENV{$key}; $env =~ s{#KEY#}{$key}; $env =~ s{#VAL#}{$val}; print $env, "\n"; }
設定したい環境変数を引数に渡します。
% perl emacsenv.pl PATH EDITOR (setenv "PATH" "/home/syohei/perl5/perlbrew/bin:/home/syohei/perl5/perlbrew/perls/current/bin:...) (setenv "EDITOR" "emacsclient")
みたいなのが出ます。
あとはこれを .zshrcあたり追加します。
emacsenv.pl PATH (その他環境変数) > ~/.emacs.d/shellenv.el
最後に、.emacsに loadのための設定を書きます。
;; load environment value (load-file (expand-file-name "~/.emacs.d/shellenv.el"))
これで目的が達成できました。