RVM警告! PATH未正确设置

时间:2014-03-26 03:07:22

标签: ruby linux rubygems rvm .bash-profile

我刚刚在我的mac上安装了rvm,但是我在全局命令上收到了这个警告

  

警告! PATH没有正确设置,'/ usr / local / rvm / gems / ruby​​-1.9.3-p194 / bin'不在第一位,通常这是由shell初始化文件引起的 - 检查它们是否为'PATH = .. 。'条目,它也可能有助于将RVM重新添加到你的dotfiles:'rvm get stable --auto-dotfiles',暂时修复此shell会话运行:'rvm use ruby​​-1.9.3-p194'。< / p>

My $ PATHS确认警告:

$echo :$PATH:
:/usr/local/rvm/bin:/usr/local/heroku/bin:/usr/local/rvm/gems/ruby-1.9.3-p194/bin:/usr/local/rvm/gems/ruby-1.9.3-p194@global/bin:/usr/local/rvm/rubies/ruby-1.9.3-p194/bin:/usr/local/rvm/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:

正如所建议的,我首先尝试rvm get stable --auto-dotfiles无济于事,然后检查了我的shell初始化文件。我的/.bash_profile:

export PATH=/usr/local/bin:/usr/local/sbin:$PATH
export PATH=/usr/local/share/python:$PATH
PATH=$PATH:$HOME/bin:/opt

我的/Users/User/.bash_profile似乎是罪魁祸首:

export PS1="[\w]$"
alias ll='ls -laGH'
alias .='echo $PWD'

### Added by the Heroku Toolbelt
export PATH="/usr/local/heroku/bin:$PATH"

# rvm
PATH=/usr/local/rvm/bin:$PATH
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

原因是如果我删除Heroku Toolbelt和rvm路径(这是其他堆栈溢出问题建议的答案),/usr/local/rvm/gems/ruby-1.9.3-p194/bin将首先出现并解决问题。但是,我不知道如何处理Heroku Toolbelt。另外,不应该PATH=/usr/local/rvm/bin:$PATH首先放置rvm吗?

我必须错过一些简单的解决方案。

附加说明: $rvm --debug get head除了上面发布的警告外,没有关于此的安装说明。

更新:调用rvm system修复了问题,但仅限于当前的shell会话。 $echo $PATH现在生成:

:/usr/local/heroku/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/rvm/bin:

什么是永久性修复?

8 个答案:

答案 0 :(得分:54)

我对rvm 1.25.26也有同样的问题。

溶液:

我修改了~/.bashrc如下:

## rvm
PATH="$GEM_HOME/bin:$HOME/.rvm/bin:$PATH" # Add RVM to PATH for scripting
[ -s ${HOME}/.rvm/scripts/rvm ] && source ${HOME}/.rvm/scripts/rvm

导致:

在__rvm_path_match_gem_home_check()函数中触发警告 $HOME/.rvm/scripts/functions/cli

如果$PATH的开头未从$GEM_HOME/bin开始,则会显示警告消息。

__rvm_path_match_gem_home_check()
{
  (( ${rvm_silence_path_mismatch_check_flag:-0} == 0 )) || return 0
  [[ -n "${GEM_HOME:-}" ]] || return 0
  case "$PATH:" in
    ($GEM_HOME/bin:*) true ;; # all fine here
    (*:$GEM_HOME/bin:*)
      __rvm_path_match_gem_home_check_warning "is not at first place"
      ;;
    (*)
      __rvm_path_match_gem_home_check_warning "is not available"
      ;;
  esac
}

答案 1 :(得分:15)

就我而言,Heroku已将以下内容添加到我的.bashrc中:

### Added by the Heroku Toolbelt
export PATH="/usr/local/heroku/bin:$PATH"

请注意它是如何将自己置于路径之前的。我所要做的就是把它切换到:

### Added by the Heroku Toolbelt
export PATH="$PATH:/usr/local/heroku/bin"

我的问题解决了!

如果您没有Heroku,请寻找可能优先于您的路径的任何其他内容。实际上,RVM只是想确保它有一个公平的机会加载Ruby之前任何包含自己在路径中加载的宝石。

答案 2 :(得分:5)

解决方案是运行

$rvm install ruby-head
$rvm use ruby-head

带有可选的$rvm docs generate-ti

我在我的系统上使用了过时的Ruby版本,将其更新为修复它的当前版本。

答案 3 :(得分:3)

在配置文件中搜索:

export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting

将该行替换为:

export PATH="$HOME/.rvm/bin:$PATH" # Add RVM to PATH for scripting

确保RVM代码位于$ PATH的开头。还要确保没有其他代码将自己置于$ PATH的开头。

答案 4 :(得分:2)

由于我使用的是rvm的ubuntu版本,因此需要将其放入.profile中。

PATH="$GEM_HOME/bin:/usr/share/rvm/bin:$PATH" # Add RVM to PATH for scripting
[ -s /usr/share/rvm/scripts/rvm ] && source /usr/share/rvm/scripts/rvm

答案 5 :(得分:1)

我通过注释

在Ubuntu 18.04中解决了此问题

[[--s“ $ HOME / .rvm / scripts / rvm”]] &&来源“ $ HOME / .rvm / scripts / rvm”#将RVM作为函数加载到Shell会话

〜/ .bashrc 文件中的

,与〜/ .bash_profile 文件中的同一行一样。

答案 6 :(得分:0)

看来,在.bashrc结束时,你需要保证rvm路径位于$PATH的开头

答案 7 :(得分:0)

右。我花了几个小时研究却没有成功,但我还是坚持了这个答案。我希望这能节省一些时间。

我的问题是安装了2个红宝石头,显然,红宝石版本也是一个问题。

➜ rvm list                   
Warning! PATH is not properly set up, '/home/ma/.rvm/gems/ruby-1.8.7-head/bin' is not at first place.
         Usually this is caused by shell initialization files. Search for 'PATH=...' entries.
         You can also re-add RVM to your profile by running: 'rvm get stable --auto-dotfiles'.
         To fix it temporarily in this shell session run: 'rvm use ruby-1.8.7-head'.
         To ignore this error add rvm_silence_path_mismatch_check_flag=1 to your ~/.rvmrc file.

rvm rubies

=> ruby-1.8.7-head [ x86_64 ]
   ruby-1.8.7-p374 [ x86_64 ]
   ruby-2.3.0 [ x86_64 ]
   ruby-2.4.0 [ x86_64 ]
 * ruby-head [ x86_64 ]

# => - current
# =* - current && default
#  * - default

在这种情况下,(尝试上述所有解决方案,thisthis)将我的默认值设置为ruby-head [ x86_64 ]并重新启动终端Warning!和我当前的ruby版本正如上面的片段所显示的那样持续存在。

解决这个问题:

rvm remove ruby-1.8.7-head

现在,如果我重新启动终端:

➜ rvm list                  

rvm rubies

   ruby-1.8.7-p374 [ x86_64 ]
   ruby-2.3.0 [ x86_64 ]
   ruby-2.4.0 [ x86_64 ]
=* ruby-head [ x86_64 ]

# => - current
# =* - current && default
#  * - default