2013-04-06 47 views
3

這裏是我的當前設置:如何在Emacs的shell命令中使用正確的rbenv Ruby版本?

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

我想使用我的全局定義的紅寶石版本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]

如果我在M-x shell中運行ruby -v,則會加載正確的版本。我懷疑M-!不能按預期工作,因爲它作爲非交互式shell運行。

有沒有辦法解決這個問題,除了像這樣運行:M-! eval "$(rbenv init -)" && ruby -v?這是有效的,但我不想插入eval "$(rbenv init -)" &&面前我執行的一切。

回答

2

您的shell的路徑需要被Emacs看到,爲了使它更容易,請使用以下elisp軟件包。

https://github.com/purcell/exec-path-from-shell

您可以通過安裝此EL-獲得通過在~/.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文件將負責其餘部分。