在执行rvm使用2.0.0 --default时出现"警告!PATH未正确设置"

Mic*_*ant 103 ruby bash .bash-profile rvm ruby-2.0

以上不是第一次工作,第二次工作.

尝试将ruby版本设置为2.0.0以用于任何新的shell窗口.

$ rvm use 2.0.0 --default
Run Code Online (Sandbox Code Playgroud)

Warning! PATH is not properly set up, '/home/durrantm/.rvm/gems/ruby-1.9.3-p125/
bin' is not at first place,
         usually this is caused by shell initialization files - check them for '
PATH=...' entries,
         it might also help to re-add RVM to your dotfiles: 'rvm get stable --au
to-dotfiles',
         to fix temporarily in this shell session run: 'rvm use ruby-1.9.3-p125'
.
Using /home/durrantm/.rvm/gems/ruby-2.0.0-p247
Run Code Online (Sandbox Code Playgroud)

然后做同样的事情

$ rvm use 2.0.0 --default
Run Code Online (Sandbox Code Playgroud)

现在没有错误,即

$ rvm use 2.0.0 --default
Using /home/durrantm/.rvm/gems/ruby-2.0.0-p247
durrantm.../durrantm$ 
Run Code Online (Sandbox Code Playgroud)

但新窗口仍然给我ruby 1.9.3,而不是2.0.0

我的.bashrc文件包含在其中:

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
[[ -s "/home/durrantm/.rvm/scripts/rvm" ]] && . "/home/durrantm/.rvm/scripts/rvm"
Run Code Online (Sandbox Code Playgroud)

我的.bash_profile有:

source ~/.profile
case $- in *i*) . ~/.bashrc;; esac
Run Code Online (Sandbox Code Playgroud)

rvm get stable
Run Code Online (Sandbox Code Playgroud)

似乎工作,但在很多绿色输出结束时显示:

Could not update RVM, get some help at #rvm IRC channel at freenode servers.
Run Code Online (Sandbox Code Playgroud)

一个新的终端窗口rvm list rubies显示:

$ rvm list rubies
Warning! PATH is not properly set up, '/home/durrantm/.rvm/gems/ruby-1.9.3-p125/bin' is not at first place,
         usually this is caused by shell initialization files - check them for 'PATH=...' entries,
         it might also help to re-add RVM to your dotfiles: 'rvm get stable --auto-dotfiles',
         to fix temporarily in this shell session run: 'rvm use ruby-1.9.3-p125'.

rvm rubies

=> ruby-1.9.3-p125 [ x86_64 ]
   ruby-1.9.3-p194 [ x86_64 ]
 * ruby-2.0.0-p247 [ x86_64 ]

# => - current
# =* - current && default
#  * - default
Run Code Online (Sandbox Code Playgroud)

Mic*_*ant 165

答案是这样说:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 
# Load RVM into a shell session *as a function*
Run Code Online (Sandbox Code Playgroud)

**我的.bashrc文件的BOTTOM**(最后一行 - 重要!).我在我的.bash_profile文件中(我在Ubuntu上)并且只有部分工作导致了令人困惑的错误.

  • 这绝对是正确的解决方案,但如果你只是做`rvm reset`它会自动为你做这个... (23认同)
  • rvm需要位于文件的底部,以防有其他行.[ba | z] shrc重新定义路径.`export PATH ="/ usr/local/bin:/ usr/local/sbin:$ PATH"`对于Homebrew可能是一个与rvm冲突的常见问题. (9认同)
  • 我把它放在我的.bash_profile的底部,因为我多次重新定义了路径.这也有效. (4认同)
  • 如果 RVM 想要处于链的顶部,移动到底部似乎违反直觉? (2认同)

小智 161

在我卸载了rvm之后我被困住了

rvm implode
Run Code Online (Sandbox Code Playgroud)

然后重新安装rvm后收到相同的错误消息.在浏览了wayne seguin的git hub页面之后.他在他的页面上列出了工具并建议使用

rvm reset 
Run Code Online (Sandbox Code Playgroud)

安装后.这修复了我的错误信息.无需编辑PATH.

  • 这对我有用!不需要PATH编辑,只需``rvm reset`(消息将最后一次显示),现在我随时发出rvm命令不再有PATH警告. (17认同)
  • 检查并重新检查我的`〜/ .bashrc`,`〜/ .bash_profile`,运行`rvm get stable --auto-dotfiles`,重新检查`〜/ .bashrc`,`〜/ .bash_profile`,和`〜/ .profile`很多次......这个答案终于解决了!跑:`rvm重置',它摆脱了警告!(恕我直言...... RVM对于成为第一个路径太过挑剔......如果我先在我的路上设置别的东西,我知道我在做什么) (13认同)
  • :tu:`rvm reset` (9认同)
  • 这对我也不起作用. (2认同)

小智 25

也许这不是解决这个问题的最佳方法,但我在.zshrc的底部添加了这一行(它也适用于.bashrc!)

export PATH="$GEM_HOME/bin:$PATH"
Run Code Online (Sandbox Code Playgroud)


Spa*_*lex 22

我尝试了迈克尔·达兰特的解决方案,它对我没用.但我跑了rvm get stable --auto-dotfiles,它开始按要求工作.

希望能帮助到你


San*_*alp 8

这不是问题的答案,而是大多数评论者/响应者提出的相关问题 - 为什么需要将rvm行放在shell rc文件的底部?

答案很简单.

  1. 其上装载的RVM代码放RVM红宝石二进制目录在的"前" $PATH,并
  2. .bashrc (或默认shell的等效项)从上到下逐行读取和解释.

想象一下以下场景:

$ echo $PATH
  /usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin 

$ [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
  /Users/sankalp/.rvm/gems/ruby-1.9.3-p547/bin:/Users/sankalp/.rvm/gems/ruby-1.9.3-p547@global/bin:/Users/sankalp/.rvm/rubies/ruby-1.9.3-p547/bin:/Users/sankalp/bin:/usr/texbin/:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin

$ export PATH=<something>:$PATH
$ echo $PATH
  <something>:/Users/sankalp/.rvm/gems/ruby-1.9.3-p547/bin:/Users/sankalp/.rvm/gems/ruby-1.9.3-p547@global/bin:/Users/sankalp/.rvm/rubies/ruby-1.9.3-p547/bin:/Users/sankalp/bin:/usr/texbin/:/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin
Run Code Online (Sandbox Code Playgroud)

显然,如果在RVM行之后的shell init文件中存在某些内容并对$ PATH进行了任何更改,更具体地说,如果它$PATH预先添加了目录,那么这些更改将把rvm添加的目录从第一个位置推下来.RVM在被调用时会发现它的ruby二进制目录不在$PATH BAM 的最开头!你会得到警告:).

我希望能让事情变得清晰.


Dav*_*Kim 5

我有一个后续问题(希望我可以简单地添加评论 - 但我没有足够的学分).我有同样的问题 - 当我按照建议使用的rvm脚本时--auto-dotfiles,我遇到了麻烦,因为shell脚本以某种方式删除了我的.bashrc_profile文件.

无论如何,我最终得到了上面列出的相同答案,将这一行放在.bashrc文件的底部. [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

您是否碰巧找到了为什么它的工作方式,而不是.bashrc文件中间的行?你是否清楚Unix加载环境变量的方式,使得RVM在一个实例中工作而在另一个实例中不工作?


Ain*_*vri 5

只是添加我的经验:如果你正在使用.bash_profile,检查是否.bashrc没有干扰.杀害.bashrc由赞成单一的Bash配置的.bash_profile作品出在这种情况下.

  • 这不是一般解决方案,FWIW.为每个嵌套的交互式shell执行`.bashrc`; `.bash_profile`仅在输入的第一个bash shell上执行,即登录shell.变量一般应设置在`.bash_profile`中,而函数,别名等(不能通过正常继承环境传输的东西)应该在`.bashrc`中设置. (2认同)

Dee*_*bur 5

我面临同样的问题.我发现在bashrc文件中

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

export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
Run Code Online (Sandbox Code Playgroud)

rvm的多个条目.我评论了一个条目及其工作正常.

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

export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
Run Code Online (Sandbox Code Playgroud)