得到“警告!使用rvm 2.0.0时,“ PATH设置不正确” --default


115

以上第一次无效,第二次有效。

尝试将任何新的shell窗口的ruby版本设置为2.0.0。

在做

$ rvm use 2.0.0 --default

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

然后做同样的

$ rvm use 2.0.0 --default

现在没有错误,即

$ rvm use 2.0.0 --default
Using /home/durrantm/.rvm/gems/ruby-2.0.0-p247
durrantm.../durrantm$ 

但是新窗口仍然给我红宝石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"

我的.bash_profile有:

source ~/.profile
case $- in *i*) . ~/.bashrc;; esac

rvm get stable

似乎有效,但在许多绿色输出结束时显示:

Could not update RVM, get some help at #rvm IRC channel at freenode servers.

新的终端窗口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

Answers:


176

我用卸载了rvm后被卡住了

rvm implode

然后在重新安装rvm后收到相同的错误消息。浏览韦恩·塞金(Wayne Seguin)的git hub页面之后。他在页面上列出了工具,并建议使用

rvm reset 

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


13
检查和重新检查我后~/.bashrc~/.bash_profile运行rvm get stable --auto-dotfiles,重新检查~/.bashrc~/.bash_profile以及~/.profile无数次......这个答案终于定了!然:rvm reset它摆脱了警告!(恕我直言... RVM太遥不可及了……如果我在路径中先设置其他内容,我知道我在做什么)
TrinitronX 2015年

11
:tu:rvm reset
JBird

18
这对我有用!只需进行PATH编辑rvm reset(消息最后一次显示),现在无论何时我发出rvm命令时都不再发出PATH警告。
JohnRDOrazio 2015年

1
使用rvm reset时,我运行rvm reset的终端中的问题已解决。但是,当我移至新终端时,错误/警告仍然存在,除非我不再运行rvm reset
Apurva Mayank

rvm help返回挺吓人的提示为rvm reset删除所有默认和系统设置 😄
穆罕默德Huseinbašić

171

答案是这样的:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 
# Load RVM into a shell session *as a function*

**在我的.bashrc文件的底部**(最后一行-重要!)。我将其保存在我的.bash_profile文件中(我在Ubuntu上),并且只能部分正常工作,从而导致令人困惑的错误。


1
如果RVM希望位于链的顶端,似乎会违反直觉地移至底部?
reneruiz 2014年

9
如果.ba [z] shrc中还有其他几行重新定义路径,则rvm必须位于文件的底部。 export PATH="/usr/local/bin:/usr/local/sbin:$PATH"因为Homebrew可能是与rvm冲突的一种常见现象。
TimeEmit 2014年

4
我将其放置在.bash_profile的底部,因为我多次重新定义了路径。这也起作用。
凯尔·苏斯

1
重新启动终端后,这对我来说效果很好
NSTJ 2015年

24
这绝对是正确的解决方案,但如果您这样做rvm reset,它将自动为您完成此任务……
拉尔夫·卡拉威

34

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

export PATH="$GEM_HOME/bin:$PATH"

IMO,是对RVM的更新的更干净的解决方案。
丹L

我不同意,我认为这是解决此问题的最佳方法:)我不得不将其作为.bash_profile的最后一行,因为它最后运行并且其中包含其他路径声明。
applejack42 '16

这确实是解决此问题的最佳解决方案之一。花了将近3个小时,终于要放弃了:D你这个男人。:)

我在〜/ .profile中添加了我的文件,该文件由〜/ bash_profile的最后一行加载,并确保在任何其他文件中都没有对$ PATH的引用。这样,它将在Ba​​sh中工作并被其他shell拾取。
Dmitri

是的,这是最好的解决方案,因为它很清楚并指定了导出位置。谢谢!!!
艾伯特·卡塔拉

23

我尝试了迈克尔·杜兰特(Michael Durrant)的解决方案,但对我而言不起作用。但是我跑了rvm get stable --auto-dotfiles,它开始按要求工作。

希望能帮助到你


这适用于Mavericks,必须重新启动终端才能完成修复。
Brett Bim 2015年

1
在装有iTerm2 3.0.15的Mac 10.12.3上,查找2.5.0,并rvm defaultconfig.fish文件的底部。rvm reset保持终端窗口打开时,该命令无济于事。该命令确实起作用。我的输出:pastebin.com/1jUCSGnP
Pysis

嗯,也许当我运行命令时,它们正在使用bash解释器,我也应该检查那些配置文件
。– Pysis

是的,即使重新启动iTerm后,它在其他终端窗口中仍然损坏,并且检查任何数量的配置文件脚本都无济于事,所以我内爆了删除了所有配置行,重新启动计算机,重新安装了带有fish功能的RVM,并启用了之一 rvm default行。现在好了
。– Pysis

8

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

答案很简单。

  1. 所加载的rvm代码将rvm ruby​​二进制目录放在的“最前面” $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

显然,如果shell初始化文件中存在某些内容 RVM行之后并且对$ PATH进行了任何更改,更具体地说,如果将目录添加到之前$PATH,则这些更改会将rvm添加的目录从其第一位置向下推。调用RVM时,将发现它的ruby二进制目录不在$PATH BAM的开头。您会收到警告:)。

我希望这可以弄清楚。


6

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


1
这解决了我的问题。我什至不知道.bashrc如何到达那里,因为我所有的配置都在.bash_profile中。rvm在安装时是否在bashrc中放了东西?考虑到bashrc仅包含一行,并且与rvm有关,因此我会假设这样做。
kevindeleon,2015年

1
上帝知道哪种命令行安装程序会将其推入。他们倾向于污染它:(
Ain Tohvri 2015年

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

5

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

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

您是否偶然发现了为什么这样做会起作用,而不是与.bashrc文件中间的行相对应?您对Unix加载使RVM在一个实例中工作而不在另一个实例中工作的环境变量的方式是否有所了解?


不,它起作用了,我继续前进:)炸了很多有趣的鱼:)
Michael Durrant

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

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

3

我从.zshrc的PATH =行中清除了所有带有.rvm的内容

那为我解决了这个问题,这里的其他答案(采购rvm脚本,或使自动dotfile变得稳定)没有解决。


2

我发现此命令非常有用。它解决了我的情况。因此,如果有人遇到相同的问题,请尝试以下操作: rvm get stable --auto-dotfiles


1

rvm install ruby-head 为我解决了这个问题-耗时很少,但是可以解决问题。不知道这是否对我的bash文件进行了任何未经许可的更新。


1

我最终删除了~/.profile~/.bashrc并且~/.zshrc

基本上,我只保留~/.bash_profileMac。而且有效。

我认为就我而言:

export PATH =“ $ PATH:$ HOME / .rvm / bin”
[[-s“ $ HOME / .rvm / scripts / rvm”]] &&源“ $ HOME / .rvm / scripts / rvm”#将RVM加载到Shell会话中*作为功能*

在这些文件中,那些重复的设置感到困惑 rvm


1

免责声明

因为我主要使用python进行开发,所以我不确定此解决方法是否会为您提供正确的ruby env或只是更改路径并摆脱警告

背景

就我而言,我rvm先安装,然后再安装pyenv。他们两个的配置都会改变$PATH。从警告中看来,rvm总是希望成为路径中的第一个

$ echo $PATH

$HOME/.rvm/gems/ruby-2.6.3/bin: ......

但是,如果您eval "$(pyenv init -)"按的要求添加pyenv,它将更改$PATH

$ echo $PATH

$HOME/.pyenv/shims:$HOME/.rvm/gems/ruby-2.6.3/bin: ......

我的解决方法

$ rvm use system #切换回系统ruby

$ rvm use ruby-2.6.3 #切换到您需要使用的版本

rvm 会将路径更改为所需的路径,那么您将不会再看到烦人的警告。


0

在注释了前2条重复行并将其添加到底部后,它起作用了。不要忘记重新启动终端以使其正常工作。

#[[ -s "$HOME/.profile" ]] && source "$HOME/.profile" # Load the default .profile
#[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
export PATH="/usr/local/opt/postgresql@9.6/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/postgresql@9.6/lib"

[[ -s "$HOME/.profile" ]] && source "$HOME/.profile" # Load the default .profile
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

0

你可以加

rvm_silence_path_mismatch_check_flag=1

到您的~/.rvmrc文件。这就是警告消息现在所暗示的。


1
这只是忽略消息,而不是修复消息,这正是用户所要的。另外,对于一个新项目,问题将再次出现。
ma3x

@ ma3x实际上,OP仅陈述了一个问题而未指出问题,因此我认为“忽略” 警告消息是有效的建议。另外,我不了解有关新项目的部分。
AkaZecik '19

1
即使没有问号,您也可以从上下文中明确地了解到他正在尝试纠正错误,而不是将其隐藏起来。最初,它建议获取最新的稳定RVM并自动加点文件。对于新项目,这是我的错误,因为我想引用新的宝石集。
ma3x

@ ma3x感谢您的见解:)也许仅仅是我们的推理方式不同,但是在阅读了问题和其他答案之后,我得出了一个结论,即OP只是想摆脱这种警告。我要再次强调,这不是错误,而是警告。而且由于强制执行PATH声音顺序对我来说是侵入性的,并且最多是保护性的,所以我决定发布此答案。我会花时间重新思考我的答案,并根据您的评论进行改进:)
AkaZecik

-3

我解决了这个问题。尝试使用命令,例如:

rvm use 2.0.0-p353

将-p353或其他您版本详细信息添加到行尾


6
这只能解决当前shell会话的问题,因此这并不是最佳答案。
IIllIIll
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.