【问题标题】:Getting "Warning! PATH is not properly set up" when doing rvm use 2.0.0 --default执行 rvm 使用 2.0.0 --default 时出现“警告!PATH 未正确设置”
【发布时间】:2013-08-19 01:26:23
【问题描述】:

上面第一次不工作,第二次工作。

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

【问题讨论】:

    标签: ruby bash rvm ruby-2.0 .bash-profile


    【解决方案1】:

    免责声明

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

    背景

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

    $ echo $PATH

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

    但是如果您按照pyenv的要求添加eval "$(pyenv init -)",它会将您的$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 会将路径更改为它喜欢的路径,然后您将不会再看到烦人的警告。

    【讨论】:

      【解决方案2】:

      你可以添加

      rvm_silence_path_mismatch_check_flag=1
      

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

      【讨论】:

      • 这只是忽略消息,而不是修复它,这是用户要求的。另外,对于一个新项目,问题会再次出现。
      • @ma3x 实际上,OP 只陈述了一个问题而没有陈述一个问题,所以我认为“忽略”一个 warning 消息是一个有效的建议。另外,我不明白关于新项目的部分。
      • 即使没有问号,您也绝对可以从上下文中理解他正在尝试修复错误,而不是隐藏它:) 另外,您的答案不完整,因为这只是警告消息的一部分建议。最初,它建议获取最新的稳定 RVM 并对您的文件进行自动打点。对于新项目,这是我的错误,因为我想引用新的 gemsets。
      • @ma3x 感谢您的见解:) 也许只是我们的推理方式不同,但在阅读了问题和其他答案后,我得出的结论是 OP 只是想摆脱这个警告。我想再次强调,这不是错误,而是警告。而且因为在PATH 中强制执行路径顺序对我来说听起来很麻烦,而且最多保护性,我决定发布这个答案。我会花时间重新考虑我的答案并根据您的 cmets 改进它:)
      【解决方案3】:

      在注释前 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*
      

      【讨论】:

        【解决方案4】:

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

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

        我认为在我的情况下,有:

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

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

        【讨论】:

          【解决方案5】:

          我用

          卸载 rvm 后卡住了
          rvm implode
          

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

          rvm reset 
          

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

          【讨论】:

          • 在多次检查和重新检查我的~/.bashrc~/.bash_profile、运行rvm get stable --auto-dotfiles、重新检查~/.bashrc~/.bash_profile~/.profile 之后......这个答案终于修好了!冉:rvm reset 它摆脱了警告! (恕我直言……RVM 对于成为第一名太挑剔了……如果我在我的道路上先设置其他东西,我知道我在做什么)
          • 这对我有用!不需要 PATH 编辑,只需 rvm reset(该消息将在最后一次显示),现在每当我发出 rvm 命令时,不再有 PATH 警告。
          • 当我使用 rvm reset 时,我运行 rvm reset 的终端中的问题得到解决。但是,当我移动到新终端时,错误/警告仍然存在,除非我不再运行 rvm reset
          • rvm helprvm reset 返回相当可怕的提示:删除所有默认和系统设置 ?
          • 在我运行之后,我做了rvm gemset list 但我所有的宝石都消失了,我以为它们被删除了,但你必须再次选择你的 ruby​​ 版本(即:rvm use 2.7.0),你的宝石会再次出现
          【解决方案6】:

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

          rvm use 2.0.0-p353
          

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

          【讨论】:

          • 这只解决了当前 shell 会话的问题,所以它不是最好的答案。
          【解决方案7】:

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

          【讨论】:

            【解决方案8】:

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

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

            【讨论】:

            • 这是一个更简洁的解决方案,IMO,对 RVM 进行了更新。
            • 我不同意,我认为这是解决此问题的最佳方法 :) 我必须将其作为我的 .bash_profile 的最后一行,因为它最后运行并且其中包含其他路径声明。跨度>
            • 这确实是解决此问题的最佳解决方案之一。花了将近 3 个小时终于要放弃了 :D 你这个人。 :)
            • 我将我的添加到我的 ~/.profile 中,该文件由 ~/bash_profile 的最后一行加载,并确保在任何其他文件中都没有对 $PATH 的引用。这样,它将在 Bash 中工作并被其他 shell 拾取。
            • 是的,这是最好的解决方案,因为很清楚并指定了导出的位置。谢谢!!!
            【解决方案9】:

            我遇到了同样的问题。我在 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
            

            【讨论】:

              【解决方案10】:

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

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

              【讨论】:

                【解决方案11】:

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

                【讨论】:

                  【解决方案12】:

                  这不是对所提问题的回答,而是对大多数评论者/回复者提出的相关问题的回答——为什么需要将 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​​ 二进制目录不是$PATH 和 BAM 的开头!你会收到警告:)。

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

                  【讨论】:

                    【解决方案13】:

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

                    【讨论】:

                    • 这解决了我的问题。我什至不确定 .bashrc 是如何到达那里的,因为我的所有配置都在 .bash_profile 中。 rvm 在安装时是否在 bashrc 中放了一些东西?考虑到 bashrc 只有一行,我会假设它与 rvm 有关。
                    • 上帝知道什么样的命令行安装程序将其推入。他们倾向于污染它:(
                    • 这不是一个通用的解决方案,FWIW。 .bashrc 对每个嵌套的交互式 shell 执行; .bash_profile 仅在输入的第一个 bash shell 上执行,即登录 shell。变量一般应设置在.bash_profile 中,而函数、别名等(不能通过正常继承环境传输的东西)应设置在.bashrc 中。
                    【解决方案14】:

                    答案是这样写的:

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

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

                    【讨论】:

                    • 如果 RVM 想成为链的顶端,移动到底部似乎违反直觉?
                    • rvm 需要位于文件的底部,以防 .[ba|z]shrc 中有其他行重新定义路径。 export PATH="/usr/local/bin:/usr/local/sbin:$PATH" for Homebrew 可能是与 rvm 发生冲突的常见问题。
                    • 我把它放在我的 .bash_profile 的底部,因为我已经多次重新定义了路径。这也有效。
                    • 重启终端后对我来说效果很好
                    • 这绝对是正确的解决方案,但如果你只是做rvm reset 它会自动为你做这件事......
                    【解决方案15】:

                    我尝试了 Michael Durrant 的解决方案,但它对我不起作用。但我跑了rvm get stable --auto-dotfiles,它开始按需要工作。

                    希望对你有帮助

                    【讨论】:

                    • 这适用于小牛队,必须重新启动终端才能完成修复。
                    • 在带有 iTerm2 3.0.15、fish 2.5.0 的 Mac 10.12.3 以及我的 config.fish 文件底部的 rvm default 上。保持终端窗口打开时,命令rvm reset 没有帮助。这个命令确实有效。我的输出:pastebin.com/1jUCSGnP
                    • 啊,可能当我运行命令时,他们使用的是bash解释器,我也应该检查那些配置文件..
                    • 不,它仍然在其他终端窗口中被破坏,即使在重新启动 iTerm 之后,检查任意数量的配置文件脚本也没有帮助,所以我内爆删除了所有配置行,重新启动计算机,重新安装 RVM鱼功能集成,并启用了rvm default这一行。现在好多了。。
                    【解决方案16】:

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

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

                    你有没有发现为什么它会以这种方式工作,而不是 .bashrc 文件中间的行?您是否清楚 Unix 加载使 RVM 在一个实例而不是另一个实例中工作的环境变量的方式?

                    【讨论】:

                    • 没有。它奏效了,我继续前进:)还有很多更有趣的鱼要炸:)
                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2013-10-11
                    • 1970-01-01
                    • 1970-01-01
                    • 2016-06-04
                    • 2021-12-18
                    • 2018-01-28
                    相关资源
                    最近更新 更多