GUI版Emacsに環境変数が引き継がれなかった話

EmacsLinux開発環境

そもそも環境変数って何

  • Windows

    • システムやユーザーにかかるもの
  • macOS, Linux

    • シェルにかかるもの
    • シェルの子プロセスに引き継がれる
    • 子プロセスでexportした環境変数は親プロセスに持ち出されない

Linux(と、多分macOSも)で、GUI版Emacsに環境変数が引き継がれない

  • 環境変数は.bashrcexportして設定している
  • つまり、環境変数はbashから起動した子プロセスにしか引き継がれない
  • アイコンをポチーして起動したGUI版Emacsはbashから起動していないので、
    bashの環境変数が引き継がれないのは当然なのである

    • bashからemacsコマンドで起動したGUI版Emacsには環境変数が引き継がれる
  • bashの環境変数をGUI版Emacsに持ち込むには、明示的に何かする必要がある

GUI版Emacsに環境変数を渡す

EmacsでPATHの設定が引き継がれない問題をエレガントに解決する

  1. M-x package-list-packages RET
  2. exec-path-from-shellをインストール
  3. init.elで実行
;; 環境変数持ち込む
(when (require 'exec-path-from-shell nil t)
  (exec-path-from-shell-initialize))