rbenv不改变ruby版本

我根据github的方向安装了rbenv。 我正在运行OSX,但我已经在Ubuntu 12.04虚拟机上尝试过,得到了相同的结果。 以下是我尝试更改ruby版本时在terminal中获得的内容:

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 

检查PATH是否包含$ HOME / .rbenv / shim和$ HOME / .rbenv / bin

 $ env | grep PATH 

另外,如果使用bash或〜/ .zshenv,如果使用zsh,请检查在〜/ .bash_profile中是否有以下内容

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

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

这可能是一个古老的问题,但谷歌带领我在这里,为了后代的缘故,我以为我会分享。

上述许多推荐的解决scheme后,我的问题依然存在。 和OP一样,我安装了rbenv,然后是ruby版本,但是我的笔记本电脑默认为系统。 我忽略的是当我跑时:

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

IOW,它仍然是系统默认的。 快点

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

切换到新版本。

我通过将以下内容添加到我的〜/ .bash_profile中来解决这个问题:

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

这是在https://github.com/sstephenson/rbenvlogging

从我可以告诉没有〜/ .rbenv / bin目录,这是由@rodowi发布在后。

我刚刚发现了同样的问题。 我所做的是卸载rbenv(通过自制软件),并重新安装它。 我还补充说

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

当我重新安装rbenv时进入〜/ .bash_profile。 现在完美的工作。

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

你的系统说:
/usr/bin/ruby

这不是rbenv使用的垫片,它在MacOS上应该是这样的:
/Users/<username>/.rbenv/shims/ruby

垫片实际上是一个脚本,就像redirect到您设置的ruby版本。

rbenv global 1.9.3 rbenv local --unset rbenv shell --unset
我build议,为了解决问题,你可以取消设置项目特定的“本地”版本,以及特定于shell的“shell”版本,只需要使用在〜/ .rbenv / verion中的纯文本文件中确定的“全局”在你的情况下,只是版本号“1.9.3”。 你可以在你的项目文件夹的根目录(不是主文件夹)中做“ls -laG”,以确保在那里不再有“.ruby-version”文件。

您可以使用“rbenv版本”来标识rbenv设置为使用哪个版本(以及设置该文件的位置和名称)。

rbenv versions

没有这些事情:直到你正确地设置path。

使用这个来确保你的* MacOS会服从你:
eval "$(rbenv init -)"

其次是:
which ruby

确保它看起来像:/Users//.rbenv/shims/ruby

然后将该行添加到您的configuration文件,以便每次打开一个新的terminal窗口时运行该行:
~/.bash_profile eval "$(rbenv init -)"

还有其他方法来修改path,可以自由地replace它们中的任何一个,而不是运行rbenv init。

注意:重新安装Rails:
gem install rails

如果您正在尝试运行Ruby on Rails,那么您需要先完成所有工作,然后再安装rails gem。 以前安装的Rails将使用硬编码的path来错误的ruby,而其他一些事情将会在错误的地方,所以只需再次安装gem。

PS如果你的MacOS不会服从你(*上面提到的),那么你可能需要find另一种方法来修改你的path,但这不太可能是个问题,因为“Macs正常工作”;)

rbenv help shell

“通过在shell中设置'RBENV_VERSION'环境variables来设置特定于shell的Ruby版本,该版本覆盖了特定于本地应用程序的版本和全局版本,应该是与rbenv已知的Ruby版本匹配的string。 '将使用您的默认系统Ruby。运行rbenv版本“的可用Ruby版本的列表。”

提供的rbenv是正确安装的,ruby -v将对应于

rbenv shell 1.9.3-p125

我遇到了同样的问题。 通过使用“sudo”运行“rbenv global”命令来解决这个问题。 我认为这是一些权限问题。

更新:我终于find了解决scheme。 我的Mac上有一个相同的文件“版本”,位于“/usr/local/Cellar/rbenv/0.3.0/”下。 我认为这是偶尔产生的。 你应该删除它。

在我的情况下改变~/.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] 

当我遇到这些症状时,问题就变成了安装在我尝试切换到的新的Ruby版本的中途未能完成,而我却没有注意到。 修复是删除并重新安装它。

(这意味着即使ruby 1.9.3出现在可用版本的rbenv列表中,但rbenv认为它没有可执行文件。因为rbenv试图改变你的ruby版本,你的path,如果它所在的位置没有任何东西,那么你的操作系统将会继续search你的默认path并find你的系统版本,在我的情况下就像问题1.8.7)。

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

至于我最简单的使用rbenvzsh是将rbenv添加到rbenvconfiguration中的插件部分。 在我的情况下,它看起来类似于:

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

介意做出更改后重新启动terminal会话。

运行这个命令

将rbenv添加到bash中,以便每次打开terminal时都会加载它

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

这将解决您的问题参考

我有同样的问题,但由自制引起的:

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

不知何故,我也通过自制软件安装了Ruby,并且自制程序path在我的$PATHpath之前的rbenvpath。 运行brew uninstall ruby固定它给我。

确保.bash_profile的最后一行是:

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

跑:

 rbenv init 

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

 rbenv local 2.4.0 

那么我的ruby -v和我的rbenv local版本是一致的。

注意:您可能还想退出您所在的目录,然后再回到该目录中,我注意到为了让事情顺利进行,我觉得这是必要的。

奇怪的是,rbenv版本没有设置.rbenv文件检查:ls -ltra – >看到rbenv被写入

你可以尝试使用chruby ? chruby不依赖垫片,而只是修改PATHGEM_HOMEGEM_PATH

为鱼壳用户

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

我忘了在安装rbenv之前删除rvm。 我删除了rvm并重新安装了rbenv,但是系统仍然没有使用被rbenv指定为全局的Ruby版本。 我尝试closuresterminal,但只有当我重新启动整个机器时才起作用。