11

我在 Lion 上使用带有 ruby​​ 支持的普通 Vim(由gist安装)。我将 ruby​​ 与 rbenv 一起使用,所以我的路径看起来像 /users/me/.rbenv/shims:.....

从 vim 内部的路径是

:!echo $PATH
> usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/Users/fb/.rbenv/shims:....

甚至我可以创建和修改环境变量:

:let $PATH = "/bar:/foo"
:!echo $PATH
> /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/foo:/bar

路径仍然以 /usr/bin 开头。

那么如何在 ~/.rbenv/shims 中访问我的 ruby​​ 1.9.3 而不是 /usr/bin 中的系统 ruby​​?

4

7 回答 7

30

这是Apple 在 OS X 10.5 Leopard 中引入的已知问题

如果您使用的是 Bash 或 Zsh 并且使用的是非交互式 shell,则会受到影响。

跑步sudo chmod ugo-x /usr/libexec/path_helper会让你恢复健康,但你应该看看这篇文章,看看为什么。

于 2012-08-27T17:33:33.593 回答
5

rvm 也有这个问题。如果 zsh 是您的默认 shell,它会在启动时/etc/zshenv被执行。

这执行/usr/libexec/path_helper. 这会根据内容/etc/paths/etc/paths.d/.

rvm的常见问题解答提到迁移/etc/zshenv/zsh/zshrc. 我这样做了,它/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin从我在 macvim 路径的开头删除了。

于 2012-04-24T03:38:59.463 回答
4

我没有shell在 .vimrc 中设置选项,所以它被自动设置为/bin/zsh.

然后我发现我在我的 .zshrc 中有一个重复的 rbenv 初始化:我删除了初始化结束 $PATH 扩展,.zshrc因为它已经由 oh-my-zsh rbenv 插件处理。

即使在那次清理之后,$PATH 的破坏仍然如此:!echo $PATH

/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/Users/fb/.rbenv/shims:/Users/fb/.rbenv/bin: /Users/fb/bin:/usr/local/sbin:/usr/games

设置:set shell=/bin/bash对我有帮助,因为我可以在我的 vim 中使用 bash: :!echo $PATH

/Users/fb/.rbenv/shims:/Users/fb/.rbenv/bin:/Users/fb/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin :/sbin:/bin:/usr/games:/Users/fb/Dropbox/local/bash

于 2012-04-02T07:39:50.133 回答
2

在您的 ~/.bashrc(或您正在使用的任何 shell)文件中,添加以下行:

PATH=/home/me/.rbenv/shims:${PATH}

然后运行source ~/.bashrc(或 .zshrc 或您正在使用的任何外壳!)

于 2012-03-24T17:01:20.237 回答
1

这可以通过添加来解决

PATH=/home/me/.rbenv/shims:${PATH}

/etc/zshenv
于 2012-08-22T10:59:11.113 回答
1

我不使用 mac 或 zsh(我在 linux 上),但是当我从 MATE 菜单运行 gvim 时遇到了这个问题。

我通过将其添加到我的 .vimrc 来解决它:

if $PATH !~ "\.rbenv"
    let $PATH="/home/username/.rbenv/shims:/home/username/.rbenv/bin:" . $PATH
endif

如果您从终端运行 vim,这可以避免设置它,否则 rbenv 路径将被包含两次。

我尝试将应用程序设置为通过终端运行,但这没有帮助。

于 2015-02-15T08:04:27.047 回答
0

是的,在 OS X 上是打开新控制台窗口时获取的 bash_profile,而在 Linux 上是你的 bashrc

于 2012-03-24T22:33:54.443 回答