【问题标题】:the correct Ruby version when opening a terminal打开终端时正确的 Ruby 版本
【发布时间】:2013-11-04 18:01:30
【问题描述】:

每次我打开终端时,我的 Ruby 版本都是错误的。我必须手动执行以下命令:

source /usr/local/rvm/scripts/rvm

我读到 RVM 不会修改 .bashrc 或 .bash_profile 但我注意到我的 .bashrc 末尾有:

PATH=$PATH:$HOME/.rvm/bin

不仅我自己没有插入,而且 rvm 的路径错误! 我改变了:

PATH=$PATH:/usr/local/rvm/bin

我重新打开了一个终端,但 Ruby 版本总是错误的!

【问题讨论】:

  • rvm 在您的 /usr/local/ 文件夹中的事实告诉我,您至少在某些时候以 root 身份安装了 RVM。这是非典型安装。您可能希望更正该问题并以普通开发用户的身份安装 RVM。

标签: ruby linux bash rvm


【解决方案1】:

rvm 确实会修改您的 .bash_profile / .bashrc - 这是它的弱点之一。特别是,它添加(应该添加)这一行以将 rvm 作为 shell 函数加载:

# Load RVM into a shell session as a function
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

即使在我更改了 rvm 中的全局默认值之后,我也遇到了类似的问题,即运行错误的 ruby​​ 版本——确保此行位于我的 .bash_profile 的末尾,已修复它。无论如何,该行应该是为了让 rvm 正常工作。

【讨论】:

  • 我不确定我是否认为这是一个弱点......您还应该在哪里指出您对登录环境的期望修改。无论如何,这根本解决不了他的问题。它没有解决他安装 RVM 的位置。
  • 它可能不会(但它可能)。在不知道他的设置细节的情况下,我认为应该解决他 bash_profile 中省略该行的问题,因为这对 rvm 的运行至关重要。需要澄清的是,作为 shell 函数加载是相对于 rbenv 的一个弱点,它没有这个要求。
【解决方案2】:

您可以在应用程序的根目录中创建一个.rvmrc 文件。

它会在直接打开根目录时运行里面的任何内容,所以我认为你可以复制它

PATH=$PATH:/usr/local/rvm/bin

而且事情应该很好。您会收到警告,但可以安全地忽略(或根据我的经验)。我认为你最好还是这样做,我发现这有助于让 rubies/gemset 直接跨应用程序。

#.rvmrc
rvm [ruby]@[gemset] #for example rvm 2.0.0-p247@my_gemset

为什么宝石/红宝石首先会被切换/重置,我真的不知道,这很烦人,但这似乎可以解决它。

阅读更多here

【讨论】:

    【解决方案3】:

    根据您的设置,由于多种原因无法加载。

    例如,当您打开 shell(取决于操作系统发行版)时,bash 文件会以各种顺序读取,尽管标准如下所示:(我相信 Ubuntu 略有不同,因此您可能想检查一下你的发行版)。

    # for interactive login shells (when you login to a terminal)
    /etc/profile
    /home/<user>/.bash_profile
    /home/<user>/.bash_login # if there is no .bash_profile
    /home/<user>/.profile # if there is no .bash_login
    # for interactive non-login shells (i.e. opening up a new tab)
    /etc/bash.bashrc
    /home/<user>/.bashrc
    

    当您直接获取 .bashrc 时会发生什么?然后它会找到rvm吗?如果是这样,那么只需确保您的 .bash_profile 来源 .bashrc aka:

    # in .bash_profile
    if [ -f ~/.bashrc ]; then
      . ~/.bashrc
    fi
    

    如果这不是原因,您可以深入研究 rvm 文档或切换到 rbenv,恕我直言,这是一个更简单的解决方案。

    【讨论】:

      【解决方案4】:

      RVM 应该自动处理这个问题,但是这段代码是错误的。

      PATH=$PATH:/usr/local/rvm/bin
      

      RVM 的路径应该是第一个。实际上,您的 bash 正在按照您的希望行事。它首先使用“系统范围”红宝石,因为您告诉您的外壳这样做。将其更改为:

      PATH=/usr/local/rvm/bin:$PATH
      

      然后source ~/.bashrc,它会如你所愿,在你登录时调用rvm ruby​​。

      【讨论】:

        猜你喜欢
        • 2021-12-07
        • 2013-03-15
        • 2017-11-11
        • 2023-03-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-10
        • 1970-01-01
        相关资源
        最近更新 更多