微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

这是我目前的设置:

>山猫MacBook
> Emacs是http://emacsformacosx.com/
> rbenv全球1.9.3-p374
>登录shell是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修订版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-!评估“$(rbenv init – )”&&ruby-v?这有效,但我不想插入eval“$(rbenv init – )”&&面对我执行的一切.

解决方法

您需要通过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文件将处理剩下的事情.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐