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

当前回答

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

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

通过进入

Finder > Utilities > Terminal >获取信息

其他回答

这可能是个老问题了,但谷歌把我带到了这里,为了子孙后代着想,我想分享一下。

在以上推荐的许多解决方案之后,我的问题仍然存在。像OP一样,我安装了rbenv,然后安装了ruby版本,但我的笔记本电脑默认为system。我在跑步时忽略了一点:

[~/.rbenv] $ rbenv versions
* system (set by /Users/alphadogg/.rbenv/version)
  2.0.0-p247

IOW,它仍然默认系统。一个快速

[~/.rbenv] $ rbenv local 2.0.0-p247

换成新版本了。

我在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版本。

检查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不在您的路径中,将运行任何版本。

将以下内容添加到.bashrc对我来说是有效的-

导出路径= " $ HOME / .rbenv /垫片:美元路径”

这里的所有其他答案都为各种情况提供了很好的建议,但还有一种更简单的方法。

rbenv文档向我们指出了rbenv-doctor诊断工具,该工具将快速验证系统上的所有这些潜在缺陷:

curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash

当一切顺利时,你会看到:

$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash                                     <aws:hd-pmp-developer>
Checking for `rbenv' in PATH: /usr/local/bin/rbenv
Checking for rbenv shims in PATH: OK
Checking `rbenv install' support: /usr/local/bin/rbenv-install (ruby-build 20201005)
Counting installed Ruby versions: 1 versions
Checking RubyGems settings: OK
Auditing installed plugins: OK

现在,如果我们打破了这些期望之一(例如删除rbenv-install),该工具将直接指向我们的问题,并提供了如何修复它的链接:

$ mv /usr/local/bin/rbenv-install rbenv-install-GONE
                                                                      
$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash                                     
Checking for `rbenv' in PATH: /usr/local/bin/rbenv
Checking for rbenv shims in PATH: OK

===> Checking `rbenv install' support: not found <===
  Unless you plan to add Ruby versions manually, you should install ruby-build.
  Please refer to https://github.com/rbenv/ruby-build#installation

Counting installed Ruby versions: 1 versions
Checking RubyGems settings: OK
Auditing installed plugins: OK