PATH
Emacs 上的设置存在一些影响我Haskell环境的问题:
我正在使用ZSH,当我转到命令行并调用时echo $PATH
,它将返回:/Users/g/Library/Haskell/bin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin
这来自.zprofile
我有的配置:
# Set the list of directories that Zsh searches for programs.
path=(
~/Library/Haskell/bin
/usr/local/{bin,sbin}
$path
)
因此,从命令行,当我调用时which cabal
,我正确地得到了:/Users/g/Library/Haskell/bin/cabal
当我启动Emacs并转到shell
和调用时which cabal
,我得到:/usr/bin/cabal
这是我的问题,因为它是另一个版本。
echo $PATH
从Emacs进行检查时shell
,我看到:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/g/Library/Haskell/bin:/usr/local/sbin
我不知道到底PATH
会有什么不同...
有谁知道如何让我的ZSH
shell和Emacs达成一致PATH
?我怀疑那是控制cabal
从何处加载的内容。
更新:echo $SHELL
从Emacs 运行打印:/bin/zsh
更新2:这是在OSX上。
更新3:我试图使用exec-path-from-shell模块,它不起作用。我仍然有相同的问题,而且副作用是,它弄乱了我的终端主题颜色:(
更新4:我已经通过安装了Emacs,brew install --cocoa --srgb emacs
并且运行了以这种方式链接的emacs:
~ ❯❯❯ which emacs
/usr/local/bin/emacs
~ ❯❯❯ l /usr/local/bin/emacs
lrwxr-xr-x 1 g admin 30B 29 Jan 18:34 /usr/local/bin/emacs -> ../Cellar/emacs/24.4/bin/emacs
~ ❯❯❯ l /usr/local/Cellar/emacs/24.4/bin/emacs
-r-xr-xr-x 1 g admin 87B 29 Jan 18:34 /usr/local/Cellar/emacs/24.4/bin/emacs
chsh...
那天回叫过更改默认的shell
~/.profile
或/etc/profile
之后修改PATH 。
~/.zshenv
,无论启动外壳程序(交互式还是非交互式),该变量都将始终源于环境变量。如果exec-path-from-shell
弄乱了终端主题颜色,则可以在调用前将其设置exec-path-from-shell-arguments
为确保其未运行zsh配置的交互式部分。nil
exec-path-from-shell-initialize