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
文件,指定了一个不再存在的版本。 一旦我删除了文件,一切正常。
至于我最简单的使用rbenv
和zsh
是将rbenv
添加到rbenv
configuration中的插件部分。 在我的情况下,它看起来类似于:
# 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在我的$PATH
path之前的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不依赖垫片,而只是修改PATH
, GEM_HOME
, GEM_PATH
。
为鱼壳用户
set --universal fish_user_paths $fish_user_paths ~/.rbenv/shims/
我忘了在安装rbenv之前删除rvm。 我删除了rvm并重新安装了rbenv,但是系统仍然没有使用被rbenv指定为全局的Ruby版本。 我尝试closuresterminal,但只有当我重新启动整个机器时才起作用。