如何在Emacs的shell-command中使用正确的rbenv Ruby版本?

时间:2013-04-06 20:16:39

标签: macos emacs zsh

这是我目前的设置:

我的〜/ .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 -)" &&

1 个答案:

答案 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文件将负责其余部分。