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

当前回答

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

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

其他回答

对我来说,使用rbenv和zsh最简单的方法是将rbenv添加到.zshrc配置中的插件部分。在我的例子中,它看起来类似于:

# Which plugins would you like to load? (plugins can be found in ~/.oh-my-zsh/plugins/*)
# Custom plugins may be added to ~/.oh-my-zsh/custom/plugins/
# Example format: plugins=(rails git textmate ruby lighthouse)
# Add wisely, as too many plugins slow down shell startup.
plugins=(git bower rails ruby rbenv gulp npm node nvm sublime)

在rbenv的帮助下,安装、切换和使用ruby版本都没有问题。

注意在做出更改后重新启动终端会话。

显然,当我使用罗塞塔终端时,它对我有效

您可以尝试使用Rosetta终端做同样的事情

通过进入

Finder > Utilities > Terminal >获取信息

奇怪的是,rbenv版本没有设置.rbenv文件。

使用:ls -ltra——>检查rbenv是否被写入。

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

我在MacBook Pro Catalina OS和MacBook Pro Big Sur上使用rbenv设置Ruby时遇到了这个问题。

以下是我的解决方法:

首先运行以下命令初始化rbenv:

rbenv init

这将给你一些指导,告诉你该怎么做。基本上你必须打开~/。ZSHRC文件,并将其添加到文件eval "$(rbenv init -)"。你可以通过运行下面的命令来完成:

echo 'eval "$(rbenv init -)"' >> ~/.zshrc

接下来,运行下面的命令来设置Ruby版本:

rbenv local <your-desired-ruby-version>

就我而言,我想要的Ruby版本是3.0.1,所以它是:

rbenv local 3.0.1

当你完成后,使用Command + Q退出你的终端,然后打开一个新终端,这次当你运行命令时:

ruby -v 
rbenv versions

您将看到已经为您设置了所需的Ruby版本。