我根据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帮助shell

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

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

Rbenv shell 1.9.3-p125

其他回答

我刚刚发现了同样的问题。我所做的就是卸载rbenv(通过homebrew)并重新安装它。我还补充了

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

到~ /。bash_profile当我重新安装rbenv。现在工作得很好。

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

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

公认的答案建议增加以下内容:

export PATH="$HOME/.rbenv/bin:$PATH"

这将不会在Mac OSX上工作,OP引用。事实上,如果你通过brew install rbenv安装rbenv,这是Mac OSX中唯一的安装方法,因为curl - ssl https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-installer | bash将在OSX中失败,那么rbenv可执行文件将安装在:

$ which rbenv
/usr/local/bin/rbenv

然而,即使在OSX中,rbenv根目录仍然在$HOME目录中:

~ viggy$ rbenv root
/Users/viggy/.rbenv

这是什么意思?这意味着当你安装ruby时,它们将安装在给定的主目录下。rbenv:

$ rbenv install 2.6.0
$ ls ~/.rbenv/versions
2.6.0

现在,brew安装完成了一些在Linux中必须手动执行的工作。例如,在Linux中,你必须手动安装ruby-build插件:

$ mkdir -p "$(rvbenv root)/plugins"
$ git clone https://github.com/rbenv/ruby-build.git "(rbenv root)"/plugins/ruby-build

这已经通过自制程序安装完成了。在homebrew安装中必须完成一个重要步骤,就像在Linux安装中一样。您必须将rbenv垫片添加到路径中。为了做到这一点,当你的shell启动时,你必须计算以下命令(这将反过来将rbenv shims添加到你的$PATH的开头):

$ vim ~/.bash_profile
eval "$(rbenv init -)"
$ source ~/.bash_profile

现在当你运行echo $PATH,你会看到rbenv shims:

$ echo $PATH
/Users/viggy/.rbenv/shims:

现在检查你的ruby版本,它会反映安装的rbenv ruby:

ruby -v
ruby 2.6.0p0 

run:

rbenv init

在我运行后,当我设置我的本地rbenv版本:

rbenv local 2.4.0

然后我的ruby -v和我的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