打开终端时正确的Ruby版本

时间:2013-11-04 18:01:30

标签: ruby linux bash rvm

每次打开终端我的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 个答案:

答案 0 :(得分: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正常工作。

答案 1 :(得分:0)

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

它直接打开root运行内部的任何内容,所以我认为你可以复制这个

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

事情应该是好的。你会得到一个警告,但忽略(或根据我的经验)是安全的。我认为你可能会更好地使用它,我发现有助于在应用程序中保持rubies / gemsets。

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

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

了解更多here

答案 2 :(得分: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又名:

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

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

答案 3 :(得分:0)

RVM应自动处理此问题,但此代码错误。

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

RVM的路径应该是第一个。你的bash实际上就像你希望一样。它首先使用'系统范围'的红宝石,因为你告诉你的shell这样做。将其更改为:

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

然后source ~/.bashrc它会按照您的意愿运行,在您登录时调用rvm ruby​​。