1

每次我打开终端时,我的 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 版本总是错误的!

4

4 回答 4

2

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 正常工作。

于 2013-11-04T18:57:23.060 回答
0

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

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

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

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

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

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

在这里阅读更多

于 2013-11-04T18:06:11.907 回答
0

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

例如,当您打开 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,恕我直言,这是一个更简单的解决方案。

于 2013-11-04T19:32:43.910 回答
0

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

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

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

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

然后source ~/.bashrc它将按您的意愿工作,rvm在您登录时调用 ruby​​。

于 2013-11-04T19:35:04.550 回答