每次打开终端我的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版本总是错的!
答案 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。