Rbenv没有改变ruby版本

我根据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
305659 次浏览

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

检查:ls -ltra—>来查看rbenv被写入。

我遇到了同样的问题。 通过使用sudo运行rbenv global命令修复了此问题。

< p >更新: 我终于找到了解决办法。 有一个相同的文件“版本”;在我的mac上,它在/usr/local/Cellar/rbenv/0.3.0/下。 我认为它偶尔是被错误创造出来的。

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

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

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

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

$ env | grep PATH

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

export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
< p >注意: 确保它是~/中的最后一个设置。bash_profile。我遇到了一个问题,我安装了一个更新我的.bash_profile和重置PATH的程序

最后,确保你的$HOME文件夹中没有.ruby-version文件,如果你在你的$HOME文件夹中做了$ rbenv local <ruby-version>,你可能无意中创建了这个文件。执行$ rbenv global <ruby-version>将修改$HOME/.rbenv/version文件,并且在$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-i.e。如果rbenv不在您的路径中,将运行任何版本。

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

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

你可以尝试使用chruby?chruby不依赖于shims,相反,它只修改PATHGEM_HOMEGEM_PATH

我通过在~/.bash_profile中添加以下内容来修复此问题:

#PATH for rbenv
export PATH="$HOME/.rbenv/shims:$PATH"

这是在https://github.com/sstephenson/rbenv中记录的内容。

从我可以告诉有不是 ~/.rbenv/bin目录,这是在帖子中提到的@rodowi。

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

在以上推荐的许多解决方案之后,我的问题仍然存在。像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

换成新版本了。

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

rbenv help shell

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

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

rbenv shell 1.9.3-p125

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

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

# 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版本时就没有问题了。

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

第一步是找出调用的是哪个ruby:

$ which ruby

你的系统会说:

/usr/bin/ruby

这不是rbenv使用的垫片,它(在MacOS上)应该看起来像:

/Users/<username>/.rbenv/shims/ruby

shim实际上是一个脚本,它的作用类似于重定向到您设置的ruby版本。

为了解决问题,我建议您取消项目特定的“本地”;版本,和壳具体&;壳&;版本和测试使用“global”;在~/中的纯文本文件中确定的版本设置。Rbenv /version仅仅是版本号“1.9.3”;在你的情况下。

$ rbenv global 1.9.3
$ rbenv local --unset
$ rbenv shell --unset

你可以在项目文件夹的根目录(不是主文件夹)执行ls -laG,以确保不再有“。ruby-version"文件存在。

你可以使用rbenv versions来确定rbenv将使用哪个版本(以及设置该版本的文件的位置和名称):

$ rbenv versions

在正确设置路径之前,这些都不重要。

用这个来确保你的MacOS会服从你:

$ rbenv init -

紧随其后的是:

$ which ruby

确保它看起来像:

/Users/<username>/.rbenv/shims/ruby

然后运行此命令将该行添加到配置文件中,以便在每次打开新终端窗口时运行:

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

还有其他方法可以修改路径,请随意替换其中任何一种,而不是运行rbenv init。

注意:重新安装Rails:

$ gem install rails

如果您试图在Rails上运行Ruby,那么您需要首先让这些都正常工作,然后再次安装Rails gem。以前安装的Rails会使用硬编码路径到错误的ruby,其他一些东西也会在错误的位置,所以只需重新安装gem。

附:如果你的MacOS不服从你(*上面提到过),那么你可能必须找到另一种方法来修改你的路径,但这不太可能是一个问题,因为“Macs just work”。;)

执行此命令

将rbenv添加到bash中,以便在每次打开终端时加载它

echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile
source ~/.bash_profile

这将解决你的问题参考

我也遇到过同样的问题,不过是由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,并且在我的$PATH中,Homebrew路径在rbenv路径之前。运行brew uninstall ruby为我解决了这个问题。

鱼壳使用者

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

在我的情况下,改变~/.zshenv没有工作。我必须在~/.zshrc中进行更改。

我只是补充了一句:

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

~/.zshrc的顶部,重新启动shell并注销。

检查它是否有效:

➜  ~ rbenv install 2.4.0
➜  ~ rbenv global 2.4.0
➜  ~ rbenv global
2.4.0
➜  ~ ruby -v
ruby 2.4.0p0 (2016-12-24 revision 57164) [x86_64-darwin16]

确保.bash_profile的最后一行是:

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

运行:

rbenv init

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

rbenv local 2.4.0

然后我的ruby -v和我的rbenv local版本重合。

注意:你可能还想退出你所在的目录,然后回到它,我注意到这对我来说是必要的,为了让事情正常工作。

如果你正在使用bash,转到

~/.bash_profile

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

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

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

~/.zshrc

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

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

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

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

这将不会在Mac OSX上工作,OP引用。事实上,如果你通过brew install rbenv安装rbenv,这是Mac OSX中唯一的安装方法,因为curl -fsSL 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

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

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

有很多误导性的答案是有效的。我认为值得一提的是从rbenv自述

  1. $ brew install rbenv
  2. $ rbenv init 并遵循它给你的指令。这是我得到的:
~ $ rbenv init
# Load rbenv automatically by appending
# the following to ~/.bash_profile:


eval "$(rbenv init -)"

我更新了~/.bash_profile

  1. 关闭终端,重新打开
  2. 通过运行以下命令来验证它是否正常工作:
$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash
  1. 现在只要安装你想要的版本:rbenv install <version>

Linux / Ubuntu用户 步骤1:< / p >

$ 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]

添加eval "$(rbenv init -);到我的MAC上的.bash_profile解决了这个问题。 rbenv当地 Ruby -v给出set

我在MacBook Pro Catalina操作系统MacBook Pro大苏尔上使用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版本。

我建议不要使用rbenv,它有几个问题。

  1. 一旦你安装了ruby,它就不附带捆绑版本了
  2. 大多数情况下,在运行捆绑包安装时产生捆绑包版本拾取问题
为了减少这么多的工作,我建议使用rvm,让生活更简单。 按此链接安装rvm https://nrogap.medium.com/install-rvm-in-macos-step-by-step-d3b3c236953b

enter image description here

显然,当我使用罗塞塔终端时,它为我工作

你可以尝试使用罗塞塔终端做同样的事情

通过进入

仪比;公用事业比;终端的在得到信息

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

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