【问题标题】:How do I set $PATH?如何设置 $PATH?
【发布时间】:2016-01-30 05:46:39
【问题描述】:

我使用的是 Ruby 2.3.0。每次我打开一个新的 bash 选项卡时,我的 ruby​​ 版本都会降级到 2.2.3。因此,为了确保我使用的是最新版本,我使用rvm use 2.3.0。这会在每个选项卡的基础上解决问题,并给出以下消息:

PATH is not properly set up, '/Users/mkeable/.rvm/gems/ruby-2.3.0/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-2.3.0'.

所以我做echo $PATH 并得到一些非常自我解释的东西:

/usr/local/bin:/Users/mkeable/.rvm/gems/ruby-2.3.0/bin:/Users/mkeable/.rvm/gems/ruby-2.3.0@global/bin:/Users/mkeable/.rvm/rubies/ruby-2.3.0/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Users/mkeable/.rvm/bin

我的 .bashrc 有这个:

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

而且 .bash_profile 有这个:

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

这是我从rvm info得到的

Warning! PATH is not properly set up, '/Users/mkeable/.rvm/gems/ruby-2.3.0/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-2.3.0'.

ruby-2.3.0:

  system:
    uname:       "Darwin BC.local 13.4.0 Darwin Kernel Version 13.4.0: Wed Mar 18 16:20:14 PDT 2015; root:xnu-2422.115.14~1/RELEASE_X86_64 x86_64"
    system:      "osx/10.9/x86_64"
    bash:        "/bin/bash => GNU bash, version 3.2.53(1)-release (x86_64-apple-darwin13)"
    zsh:         "/bin/zsh => zsh 5.0.2 (x86_64-apple-darwin13.0)"

  rvm:
    version:      "rvm 1.26.11 (latest) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]"
    updated:      "3 minutes 39 seconds ago"
    path:         "/Users/mkeable/.rvm"

  ruby:
    interpreter:  "ruby"
    version:      "2.2.3p173"
    date:         "2015-08-18"
    platform:     "x86_64-darwin13"
    patchlevel:   "2015-08-18 revision 51636"
    full_version: "ruby 2.2.3p173 (2015-08-18 revision 51636) [x86_64-darwin13]"

  homes:
    gem:          "/Users/mkeable/.rvm/gems/ruby-2.3.0"
    ruby:         "/Users/mkeable/.rvm/rubies/ruby-2.3.0"

  binaries:
    ruby:         "/usr/local/bin/ruby"
    irb:          "/usr/local/bin/irb"
    gem:          "/usr/local/bin/gem"
    rake:         "/usr/local/bin/rake"

  environment:
    PATH:         "/usr/local/bin:/Users/mkeable/.rvm/gems/ruby-2.3.0/bin:/Users/mkeable/.rvm/gems/ruby-2.3.0@global/bin:/Users/mkeable/.rvm/rubies/ruby-2.3.0/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/Users/mkeable/.rvm/bin"
    GEM_HOME:     "/Users/mkeable/.rvm/gems/ruby-2.3.0"
    GEM_PATH:     "/Users/mkeable/.rvm/gems/ruby-2.3.0:/Users/mkeable/.rvm/gems/ruby-2.3.0@global"
    MY_RUBY_HOME: "/Users/mkeable/.rvm/rubies/ruby-2.3.0"
    IRBRC:        "/Users/mkeable/.rvm/rubies/ruby-2.3.0/.irbrc"
    RUBYOPT:      ""
    gemset:       ""

所以这让我更加困惑。 rvm list rubies 说我只有 2.3.0,但是我这里的版本设置为 2.2.3。

我可以很清楚地看到我需要做什么,即(我认为)在 $PATH 的开头设置/Users/mkeable/.rvm/gems/ruby-2.3.0/bin。但是怎么做呢?

【问题讨论】:

    标签: ruby macos rvm


    【解决方案1】:

    假设您的 Ruby 2.2 二进制文件在 /usr/local/bin 中,那么您绝对不希望这条路径出现在您的 /Users/mkeable/.rvm/gems/ruby-2.3.0/bin 前面。

    保证前者在后者前面做

    export PATH="/usr/local/heroku/bin:$PATH" 
    export PATH="$HOME/.rvm/bin:$PATH"
    

    在你的.bash_profile

    还有一点需要注意 - 如果 Ruby 2.2 确实在 /usr/local/bin 中,这意味着您可能只能从该路径中删除(或临时重命名)二进制文件,而不是重新安排您的 $PATH。

    【讨论】:

    • 是的,就是这样。 usr/local/bin 正在使用 Ruby 2.2。我按照你的建议做了,现在我得到了/usr/local/heroku/bin:/usr/local/bin:/Users/mkeable/.rvm/gems/ruby-2.3.0/binruby -v 仍然说我使用的是 2.2。 2.2 甚至不在我的系统上。
    • 我更新了我的答案,因为我错过了你问题的关键部分。
    • 这仍然不太奏效。我最终将export PATH="/Users/mkeable/.rvm/gems/ruby-2.3.0/bin:$PATH" 放入.bash_profile,这可行,但复制了该二进制文件,因此它现在出现在位置 1 和 3 中。
    • 我明白了。 export PATH="$HOME/.rvm/bin:$PATH" 和您的解决方案应该是等效的。 $HOME 将扩展为 /Users/mkeable
    • 其实现在我好像让rvm使用了Ruby 2.0。当前和默认设置为 2.3.0(检查 rvm info),但在此工作后 ruby -v 显示 2.0。
    【解决方案2】:

    在我的 Mac 上 ~/.profile 我有:

    export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting
    [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
    

    在我的 ~/.bash_profile 中:

    source ~/.profile
    

    完成这些配置后,关闭您的终端(在 Mac 上为 Cmd + q)并再次打开它。确保已安装所有要求、RVM 正常工作并且已安装 ruby​​ 2.3.0:

    rvm requirements
    rvm info
    rvm install ruby-2.3.0
    

    在您的项目中,我建议在您的项目根文件夹中保存一个 .rvmrc 文件:

    rvm use ruby-2.3.0
    

    或搭配宝石:

    rvm use ruby-2.3.0@my_projet_gemset
    

    这样您每次进入项目根文件夹时都会切换到 ruby​​ 2.3.0(和您的 gemset)。

    非常适合我。

    【讨论】:

    • 此答案仅适用。我的系统上没有 2.2,所以没有理由让 /usr/local/bin 出现。
    【解决方案3】:

    export PATH="/Users/mkeable/.rvm/gems/ruby-2.3.0/bin:$PATH" 放入.bash_profile 将正确的Ruby 二进制文件放在路径的开头。从.bash_profile 中删除source ~/.profile 消除了我从echo $PATH 获得的所有翻倍。 .bashrc 已经加载,所以没有理由再次加载它。

    【讨论】:

      猜你喜欢
      • 2011-04-02
      • 2014-04-27
      • 2015-11-03
      • 1970-01-01
      • 1970-01-01
      • 2017-01-09
      • 2013-09-17
      • 2012-04-10
      • 1970-01-01
      相关资源
      最近更新 更多