打开终端时正确的Ruby版本

每次我打开一个终端,我的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会修改你的.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正常工作。

您可以在应用程序的根目录中创建.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首先被切换/重置,我真的不知道它很烦人,但这似乎解决了它。

在这里阅读更多

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

例如,当你打开一个shell(取决于操作系统发行版)时,bash文件是按各种顺序读取的,虽然这是标准的样子:(我相信Ubuntu略有不同,所以你可能想检查那是不是你的发行版) 。

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

直接采购.bashrc会发生什么? 它会找到rvm吗? 如果是这样,那么只需要确保你的.bash_profile来源.bashrc又名:

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

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

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

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

RVM的路径应该是第一个。 你的bash按照你的意愿行事。 它首先使用’系统范围’的ruby,因为你告诉你的shell这样做。 将此更改为:

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

然后source ~/.bashrc它会按你的意愿工作,登录时调用rvm ruby。