128

以上第一次不起作用,第二次起作用。

尝试将任何新的 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$ 

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

我的 .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
4

16 回答 16

194

卸载 rvm 后我被卡住了

rvm implode

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

rvm reset 

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

于 2014-09-19T21:37:18.810 回答
177

答案是这样的:

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

**在我的 .bashrc 文件的底部**(最后一行 - 重要!)。我在我的 .bash_profile 文件中有它(我在 Ubuntu 上),它只是部分起作用,导致了令人困惑的错误。

于 2013-08-16T17:11:36.923 回答
51

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

export PATH="$GEM_HOME/bin:$PATH"
于 2015-07-22T20:40:29.543 回答
23

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

希望能帮助到你

于 2014-02-05T15:19:46.527 回答
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

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

我希望这能让事情变得清楚。

于 2014-08-16T20:20:31.053 回答
6

只是添加我的经验:如果您正在使用.bash_profile,请检查是否.bashrc没有干扰。在这种情况下,.bashrc通过解决方案来支持单一的 Bash 配置。.bash_profile

于 2014-07-30T08:40:43.123 回答
5

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

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

您是否碰巧找到了为什么它会以这种方式工作,而不是 .bashrc 文件中间的行?您是否对 Unix 加载环境变量的方式有一定的了解,该环境变量使 RVM 在一个实例中工作而不是在另一个实例中工作?

于 2013-08-28T22:22:33.590 回答
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
于 2015-04-16T06:23:55.637 回答
4

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

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

于 2015-03-20T03:20:21.867 回答
2

我发现这个命令非常有用。它解决了我的情况。所以如果有人遇到同样的问题,试试这个: rvm get stable --auto-dotfiles

于 2015-02-06T09:27:21.257 回答
2

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

基本上我只保留~/.bash_profile在我的mac上。它有效。

我认为就我而言,有:

导出 PATH="$PATH:$HOME/.rvm/bin"
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # 将 RVM 加载到 shell 会话中*作为函数*

在这些文件中,那些重复的设置混淆了rvm

于 2017-12-23T14:02:04.467 回答
2

免责声明

因为我主要使用 python 开发,所以我不确定这个解决方法会给你一个正确的 ruby​​ 环境还是只是改变路径并摆脱警告

背景

就我而言,我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会将路径更改为它喜欢的路径,然后您将不会再看到烦人的警告。

于 2020-05-15T19:35:53.393 回答
1

rvm install ruby-head 为我解决了这个问题 - 耗时很少,但成功了。不确定这是否对我的 bash 文件进行了任何不明显的更新。

于 2015-10-05T01:12:40.193 回答
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*
于 2019-03-16T12:57:52.927 回答
0

你可以加

rvm_silence_path_mismatch_check_flag=1

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

于 2019-07-14T18:46:22.717 回答
-3

我解决了这个问题。尝试使用这样的命令:

rvm use 2.0.0-p353

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

于 2015-10-21T08:21:07.350 回答