我根据github的说明安装了rbenv。我正在运行OSX,但我已经在Ubuntu 12.04虚拟机上尝试了这一点,并得到了相同的结果。下面是当我尝试更改ruby版本时,在我的终端中得到的结果:

rbenv versions
* 1.9.3-p0 (set by /Users/user/.rbenv/version)
1.9.3-p125

rbenv global
1.9.3-p0

rbenv rehash

ruby -v
ruby 1.8.7 (2011-12-28 patchlevel 357) [universal-darwin11.0]

which ruby
/usr/bin/ruby

有人知道为什么rbenv没有像它认为的那样切换ruby版本吗?此外,本地目录中没有.rbenv文件,这将导致ruby版本默认为1.8.7

rbenv local
rbenv: no local version configured for this directory

当前回答

我在安装rbenv之前忘记删除rvm。我删除了rvm并重新安装了rbenv,但是系统仍然没有使用被rbenv指定为全局的Ruby版本。我试着关闭终端,但它只工作了一次,我重新启动整个机器。

其他回答

如果使用bash,请转到

~/.bash_profile

并添加以下行(如果还没有的话)

if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

如果您正在使用Zsh,请转到

~/.zshrc

并在.zshrc文件的末尾添加同一行代码。

然后简单地重新启动你的终端,现在应该没问题了。

当我出现这些症状时,问题原来是我试图切换到的新Ruby版本的安装中途失败了,而我没有注意到。解决方案是删除并重新安装它。

(这意味着即使ruby 1.9.3出现在rbenv的可用版本列表中,但它在rbenv假设的路径上没有可执行文件。由于rbenv试图通过在路径前添加一个位置来改变你的ruby版本,如果它所添加的位置中实际上没有任何内容,那么你的操作系统将很乐意继续搜索默认路径并找到你的系统版本,在我的例子中,就像问题的1.8.7一样。)

Rbenv帮助shell

"通过在shell中设置'RBENV_VERSION'环境变量来设置特定于shell的Ruby版本。此版本将覆盖特定于本地应用程序的版本和全局版本。应该是一个与rbenv已知的Ruby版本匹配的字符串。特殊版本字符串'system'将使用默认的系统Ruby。运行rbenv versions'查看可用的Ruby版本列表。”

如果rbenv被正确安装,ruby -v将对应于

Rbenv shell 1.9.3-p125

我也遇到过同样的问题,不过是由Homebrew软件引起的:

[~]$ rbenv version
2.3.0 (set by /Users/user/.rbenv/version)
[~]$ ruby -v
ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin16]
[~]$ which ruby
/usr/local/bin/ruby

我也通过Homebrew安装了Ruby, Homebrew路径在$ path中的rbenv路径前面。运行brew uninstall ruby为我解决了这个问题。

我尝试了所有的解决方案,但没有一个对我有效。甚至我也在.zshrc文件中包含了路径。

就我而言,我使用的是MacBook Pro M2和macOS Ventura 13.2。我使用的是React Native 0.71.2,需要Ruby 2.7.6版本。

我简单地把下面的代码放在。zprofile中,而不是。zshrc,它工作了:

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init - zsh)"