我根据github指示安装了rbenv。我正在运行OSX,但我在Ubuntu 12.04 VM上尝试了这个并得到了相同的结果。当我尝试更改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
答案 0 :(得分:421)
检查PATH是否包含$ HOME / .rbenv / shims和$ HOME / .rbenv / bin
$ env | grep PATH
如果使用bash,还要检查〜/ .bash_profile中是否包含以下内容;如果使用zsh,请检查〜/ .zshenv
export PATH="$HOME/.rbenv/bin:$PATH"
eval "$(rbenv init -)"
注意: 确保它是〜/ .bash_profile中的最后一个设置。我遇到了一个问题,我安装了一个程序来更新我的.bash_profile并重置PATH。
答案 1 :(得分:86)
这可能是一个老问题,但谷歌带领我来到这里,为了后人的缘故,我想我会分享。
在上面的许多推荐解决方案之后,我的问题仍然存在。像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
将其切换为新版本。
答案 2 :(得分:78)
我通过将以下内容添加到我的〜/ .bash_profile:
来修复此问题#PATH for rbenv
export PATH="$HOME/.rbenv/shims:$PATH"
这是https://github.com/sstephenson/rbenv中记录的内容。
据我所知,没有〜/ .rbenv / bin目录,在@rodowi的帖子中提到过。
答案 3 :(得分:26)
第一步是找出被调用的红宝石:
which ruby
你的系统说:
/usr/bin/ruby
这不是rbenv使用的垫片,它(在MacOS上)应该是这样的:
/Users/<username>/.rbenv/shims/ruby
垫片实际上是一个脚本,其作用类似于您设置的红宝石版本的重定向。
rbenv global 1.9.3
rbenv local --unset
rbenv shell --unset
我建议您在解决问题时取消设置项目特定的“本地”版本,以及特定于shell的“shell”版本,并使用“全局”版本设置进行测试,该设置在〜/ .rbenv / verion中的纯文本文件中确定。在你的情况下将只是版本号“1.9.3”。您可以在项目文件夹的根目录(而不是主文件夹)中执行“ls -laG”,以确保不再存在“.ruby-version”文件。
您可以使用“rbenv版本”来确定rbenv设置使用的版本(以及设置该文件的文件的位置和名称)。
rbenv versions
没有重要事项:直到你正确设置路径。
使用它来确保您的* MacOS会服从您:
eval "$(rbenv init -)"
其次是:
which ruby
确保它看起来像: /用户//。rbenv /垫片/红宝石
然后将该行添加到您的个人资料中,以便每次打开新的终端窗口时都会运行:
~/.bash_profile
eval "$(rbenv init -)"
还有其他方法可以修改路径,可以随意替换它们而不是运行rbenv init。
注意:重新安装Rails:
gem install rails
如果您尝试运行Ruby on Rails,那么您需要先将其全部工作,然后再次安装rails gem。以前安装的Rails将使用硬编码路径来处理错误的ruby,其他几个东西也会出错,所以只需再次安装gem。
P上。 S.如果您的MacOS不服从您(*如上所述),那么您可能必须找到另一种方法来修改您的路径,但这不太可能是一个问题因为“Macs正常工作”;)
答案 4 :(得分:21)
我刚刚发现了同样的问题。我做的是卸载rbenv(通过自制程序)并重新安装它。我还添加了
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
当我重新安装rbenv时,进入〜/ .bash_profile。现在工作得很好。
答案 5 :(得分:9)
在我的情况下,更改~/.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]
答案 6 :(得分:6)
运行此命令
echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile
source ~/.bash_profile
这将解决您的问题Reference
答案 7 :(得分:4)
我有同样的问题,但是由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,Homebrew路径位于$PATH
的rbenv路径之前。正在运行brew uninstall ruby
为我修复了它。
答案 8 :(得分:4)
rbenv help shell
“通过在shell中设置'RBENV_VERSION'环境变量来设置特定于shell的Ruby版本。此版本覆盖特定于localapplication的版本和全局版本。应该是与rbenv已知的Ruby版本匹配的字符串。特殊版本字符串'system'将使用您的默认系统Ruby。运行rbenv versions'以获取可用Ruby版本的列表。“
如果正确安装了rbenv,ruby -v将对应
rbenv shell 1.9.3-p125
答案 9 :(得分:3)
我遇到了同样的问题。 通过使用“sudo”运行“rbenv global”命令来解决此问题。 我认为这是许可问题。
更新: 我终于找到了解决方案。 我的mac上有一个相同的文件“version”,位于“/usr/local/Cellar/rbenv/0.3.0/”下。 我认为它偶尔会被错误地创建。你应该删除它。
答案 10 :(得分:3)
至于我,使用rbenv
和zsh
的最简单方法是将rbenv
添加到.zshrc
配置中的插件部分。在我看来,它看起来类似于:
# 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版本时没有问题。
注意在进行更改后重新启动终端会话。
答案 11 :(得分:3)
当我遇到这些症状时,问题结果是安装在我试图切换到的新Ruby版本中途失败了,没有我注意到。解决方法是删除&amp;重新安装它。
(这意味着尽管ruby 1.9.3出现在可用版本的rbenv列表中,但它在rbenv假设的路径上没有可执行文件。因为rbenv试图通过预先添加来改变你的ruby版本路径的位置,如果它所在的位置实际上没有任何内容,您的操作系统将很乐意继续搜索您的默认路径并找到您的系统版本,在我的情况下就像问题1.8.7一样。)
答案 12 :(得分:2)
我重新安装rbenv
之后就发生了这件事。显然我的主目录中有一个.ruby-version
文件,指定一个不再存在的版本。删除文件后,一切正常。
答案 13 :(得分:2)
for fish shell user
set --universal fish_user_paths $fish_user_paths ~/.rbenv/shims/
答案 14 :(得分:2)
确保onComplete
的最后一行是:
.bash_profile
答案 15 :(得分:2)
可接受的答案建议添加以下内容:
export PATH="$HOME/.rbenv/bin:$PATH"
这在OP所引用的Mac OSX上不起作用。实际上,如果通过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
这是什么意思?这意味着当您安装红宝石时,它们将安装在给定的主目录下的.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
这已通过自制程序安装完成。与Linux安装一样,在自制程序安装中必须完成一个重要步骤。您必须将rbenv垫片添加到路径中。为此,在您的shell启动时,您必须评估以下命令(该命令将把rbenv垫片添加到$ PATH的开头):
$ vim ~/.bash_profile
eval "$(rbenv init -)"
$ source ~/.bash_profile
现在,当您运行echo $PATH
时,将看到rbenv垫片:
$ echo $PATH
/Users/viggy/.rbenv/shims:
现在检查您的ruby版本,它将反映已安装的rbenv ruby:
ruby -v
ruby 2.6.0p0
答案 16 :(得分:1)
运行:
localStorage.setItem("val1","some text");
localStorage.getItem("val1")
//some text
运行之后,当我设置本地rbenv版本时:
rbenv init
然后我的rbenv local 2.4.0
和我的ruby -v
版本重合。
注意:你可能还想退出你所在的目录,然后再回到它,我注意到这对我来说是必要的,以便让事情发挥作用。
答案 17 :(得分:1)
Linux / Ubuntu 用户 第 1 步:
$ 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]
答案 18 :(得分:0)
您可以尝试使用chruby吗? chruby不依赖于垫片,而只是修改PATH
,GEM_HOME
,GEM_PATH
。
答案 19 :(得分:0)
奇怪的是,rbenv版本没有设置.rbenv文件 检查:ls -ltra - &gt;看到写了一个rbenv
答案 20 :(得分:0)
如果您正在使用 bash ,请转到
~/.bash_profile
并添加以下行(如果尚未添加)
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi
如果您使用的是Zsh,请转到
~/.zshrc
并在.zshrc文件的末尾添加同一行代码。
然后只需重新启动终端即可,现在应该可以了。
答案 21 :(得分:0)
这里所有其他答案都可以针对各种情况提供很好的建议,但是有一种更简单的方法。
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
答案 22 :(得分:0)
将 eval "$(rbenv init -)" 添加到我的 Mac 上的 .bash_profile 解决了这个问题。 本地环境 ruby -v 给出了集合
答案 23 :(得分:0)
我在 MacBook Pro Catalina OS 上使用 rbenv 设置 Ruby 时遇到了这个问题。
这是我修复的方法:
首先运行下面的命令来初始化rbenv:
rbenv init
这会给你一些关于做什么的指导。基本上,您必须打开 ~/.zshrc
文件并将其添加到文件 eval "$(rbenv init -)"
。您可以通过运行以下命令来完成此操作:
echo 'eval "$(rbenv init -)"' >> ~/.zshrc
接下来,运行以下命令来设置您的 ruby 版本:
rbenv local your-desired-ruby-version
或
rbenv shell your-desired-ruby-version
就我而言,我想要的 ruby 版本是 3.0.1,所以是:
rbenv local 3.0.1
完成后,使用 Command + Q 退出终端,然后打开一个新终端,这次是运行命令:
ruby -v
rbenv versions
您会看到已经为您设置了所需的 ruby 版本。
仅此而已。
我希望这会有所帮助
答案 24 :(得分:-1)
我在安装rbenv之前忘了删除rvm。我删除了rvm并重新安装了rbenv,但是系统仍然没有使用rbenv指定为全局的Ruby版本。我尝试关闭终端,但只有在我重新启动整台机器后才能工作。