Cocoa Emacs内のshellにおけるPATH設定
Cocoa Emacsを使用していてshell-commandを使用するelisp(私の場合はrcodetools.el)を使用したとき、PATHの設定が意図したものにならなくて困った。
症状としてはM-x shell-commandでのPATHに
M-x shell-command echo $PATH => /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin
setenvやexec-pathで設定したPATHが反映されないということに。
(getenv "PATH") #=> ("/opt/local/bin", ...) exec-path #=> ("/opt/local/bin", ...)
結果として、macのデフォルトのrubyが使われてしまって困った。
(http://d.hatena.ne.jp/handlename/20101118/1290098356と同じ症状の様子。)
対応としてはshell-file-nameにzshではなくbashを設定することでなおった。
以下コード
;; for m-x shell-command (setq shell-file-name "/bin/bash") ;; for m-x shell (setq explicit-shell-file-name "/bin/zsh")
id:ramusara さんに"/etc/zshenv"が呼ばれてるのではと指摘され、"~/.zshenv"にPATH関係の設定をすれば
;; for m-x shell-command (setq shell-file-name "/bin/zsh")
でもうまくいきました。ありがとうございまーす。