【问题标题】:RVM doesn't switch RubiesRVM 不切换红宝石
【发布时间】:2016-05-18 05:00:33
【问题描述】:

我在 CentOS 上运行 Ruby 1.9.1p243,我决定安装 rvm 来处理升级到 1.9.2 或降级到 1.8.7(无论哪个更适合 rails3)。

我按照此处的说明进行操作:http://rvm.beginrescueend.com/rvm/install/ 并且所有内容都已正确安装。我能够编译和安装 Ruby 1.8.7、1.9.1 和 1.9.2。

但是,如果我尝试实际切换到 rvm 安装的 Rubies 之一,例如 rvm 使用 1.8.7,则没有任何效果。我的系统仍然使用我在 /usr/local/bin/ruby 中安装的 Ruby。

我得到的输出示例:

$ rvm use 1.8.7
$ ruby -v
ruby 1.9.1p243 (2009-07-16 revision 24175) [i686-linux]
$ which ruby
/usr/local/bin/ruby
$ rvm use 1.9.2
$ ruby -v
ruby 1.9.1p243 (2009-07-16 revision 24175) [i686-linux]
$ which ruby
/usr/local/bin/ruby

我不知道为什么会发生这种情况,而且我似乎也无法在网上找到有关此问题的任何信息。任何帮助将不胜感激。

【问题讨论】:

  • 您是否真的在 .bashrc 中设置了脚本?这可能就是你所缺少的。
  • 如果你的意思是,我是否将 [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 添加到我的 .bashrc 中,那么是的,我做到了。在我的 .bashrc 中没有像安装说明警告那样“返回”任何内容。

标签: ruby rvm


【解决方案1】:

刚刚遇到同样的问题。

不要将以下脚本附加到 ~/.bash_profile,而是将其附加到 ~/.bashrc

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # This loads RVM into a shell session.

然后重启终端。

【讨论】:

  • 把它放在 ~/.bashrc 中,然后重新加载一个 shell 也解决了我的问题。
  • @Shuo 你能更新那个链接或删除帖子吗,它转到了一个关于 b12 的德国网站......不确定这是你想要的。
【解决方案2】:

通常,通过 IRC(freenode 上的#rvm)最简单的 rvm 支持 - 在这种特殊情况下,运行“type rvm | head -n1”会显示什么?它应该显示“rvm 是一个函数”。如果不是,这意味着到源 rvm 的线路没有正确运行,因此切换不起作用。通常这意味着您要么在 ~/.bashrc 中有返回,要么您错过了将行添加到源 rvm。

【讨论】:

  • 该命令输出“rvm is /usr/local/bin/rvm”而不是“rvm is a function”,但是,我的 .bashrc 文件似乎按照安装指南正确设置.不过,我会检查 irc 频道,谢谢。
  • 这是我的 .bashrc 的问题;因为我是 root 用户,所以它安装在与说明所述不同的位置,我必须更改源代码行以反映这一点。
  • 您能告诉我们您在 bashrc 文件中所做的更改吗?
  • Lichtamberg:当它是 root 时,您从 /usr/local/rvm/scripts/rvm 与 $HOME/.rvm/scripts/rvm 进行源代码 - 只需更改源代码行以匹配它的声音像埃文一样。
  • Sutto:这正是我所做的。
【解决方案3】:

您的安装是作为 root 帐户。 在 shell 中试试这个 [[ -s "/usr/local/rvm/scripts/rvm" ]] && . "/usr/local/rvm/scripts/rvm"

在 rvm 开关操作之前。我在我的个人资料文件中添加了这一行,现在一切正常。

【讨论】:

    【解决方案4】:

    可能是终端的问题,并且 您应该尝试关闭终端窗口 并打开一个新的。 :) 再试试看有没有变...

    【讨论】:

      【解决方案5】:

      我一直在努力将默认 rvm ruby​​ 设置为无济于事,直到我尝试了这个:

      sudo bash -l -c 'rvm alias create default ruby-1.9.3-p392'
      

      "sudo" 用于写入 /usr/local/rvm/config/alias (在我的示例中,它将包含“default=ruby-1.9.3- p392")
      "bash -l" 是为了确保它运行登录shell的所有脚本(/etc/profile、/etc/bash.bashrc等)

      【讨论】:

        猜你喜欢
        • 2017-10-20
        • 1970-01-01
        • 1970-01-01
        • 2013-01-22
        • 2011-09-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多