这是我目前的设置:
我的〜/ .zprofile(我确定该文件已被执行):
# Customize to your needs...
export PATH=/Users/username/.rbenv/shims:/Users/username/.nvm/v0.9.8/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin
eval "$(rbenv init -)"
我想将全局定义的ruby版本与M-x shell-command
(或M-!
)一起使用。我希望M-! ruby -v
返回ruby 1.9.3p374 (2013-01-15 revision 38858) [x86_64-darwin12.3.0]
,但我得到ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]
。
如果我在ruby -v
中运行M-x shell
,则会加载正确的版本。我怀疑M-!
无法按预期工作,因为它作为非交互式shell运行。
除了运行类似:M-! eval "$(rbenv init -)" && ruby -v
之外,还有办法解决这个问题吗?这有效,但我不想在我执行的所有内容之前插入eval "$(rbenv init -)" &&
。
答案 0 :(得分:4)
Emacs需要看到你的shell路径,为了更容易,请使用以下elisp包。
https://github.com/purcell/exec-path-from-shell
您可以通过el-get或手动将其放入~/.emacs.d/lisp
目录并将其添加到~/.emacs
或~/.emacs.d/init.el
文件中来安装。
(add-to-list 'load-path "~/.emacs.d/lisp")
(unless (require 'exec-path-from-shell nil 'noerror)
(exec-path-from-shell-initialize))
lisp文件将负责其余部分。