我根据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

当前回答

我尝试了所有的解决方案,但没有一个对我有效。甚至我也在.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)"

其他回答

Linux / Ubuntu用户 步骤1:

$ rbenv versions
  system
  2.6.0
* 2.7.0 (set by /home/User/Documents/sample-app/.ruby-version) #Yours will be different
  2.7.2

步骤2:

$ nano /home/User/Documents/sample-app/.ruby-version

步骤3:

$ ruby -v
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux]

检查PATH包含$HOME/。$HOME/.rbenv/bin

$ env | grep PATH

还要检查~/中是否包含以下内容。Bash_profile如果使用bash或~/。Zshenv如果使用ZSH

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

注意: 确保它是~/中的最后一个设置。bash_profile。我遇到了一个问题,我安装了一个更新我的.bash_profile和重置PATH的程序。

最后,确保你的$HOME文件夹中没有一个。ruby-version文件,如果你在$HOME文件夹中使用$ rbenv local <ruby-version>,那么这个文件可能是你无意中创建的。执行$ rbenv global <ruby-version>将修改$HOME/。如果$HOME文件夹中存在一个.ruby-version文件,则会覆盖$HOME/.rbenv/version设置的版本。

从文档中可以看出:

选择Ruby版本 当你执行一个shim时,rbenv通过从以下源读取它来决定使用哪个Ruby版本,顺序如下:

如果指定了RBENV_VERSION环境变量。您可以使用rbenv shell命令在当前shell会话中设置此环境变量。

通过搜索您正在执行的脚本的目录及其每个父目录,直到到达文件系统的根目录,可以找到的第一个.ruby版本文件。

通过搜索当前工作目录及其每个父目录找到的第一个.ruby版本文件,直到到达文件系统的根目录。您可以使用rbenv local命令修改当前工作目录中的.ruby-version文件。

全局~/。rbenv /版本文件。可以使用rbenv global命令修改该文件。如果全局版本文件不存在,rbenv假设您想要使用“系统”ruby—即。如果rbenv不在您的路径中,将运行任何版本。

这发生在我重新安装rbenv之后。显然,我的主目录中有一个.ruby版本的文件,指定了一个不再存在的版本。一旦我删除了文件,一切都正常了。

鱼壳使用者

set --universal fish_user_paths $fish_user_paths ~/.rbenv/shims/

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