Getting “Warning! PATH is not properly set up” whe

2019-01-09 23:55发布

Above doesn't work first time, works 2nd time.

Try to set ruby version to 2.0.0 for any new shell windows.

Doing

$ rvm use 2.0.0 --default

gives

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

Then doing the same

$ rvm use 2.0.0 --default

now gives no error, i.e.

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

but new windows are still giving me ruby 1.9.3, not 2.0.0

My .bashrc file has in it:

PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
[[ -s "/home/durrantm/.rvm/scripts/rvm" ]] && . "/home/durrantm/.rvm/scripts/rvm"

My .bash_profile has:

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

Trying

rvm get stable

seems to work but at the end of a lot of green output shows:

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

A new terminal windows with rvm list rubies shows this:

$ 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

13条回答
趁早两清
2楼-- · 2019-01-10 00:37

Just adding my experience: if you're using .bash_profile, check if .bashrc is not interfering. Killing .bashrc in favour of single Bash configuration by .bash_profile works out in this case.

查看更多
霸刀☆藐视天下
3楼-- · 2019-01-10 00:39

I tried Michael Durrant's solution and it didn't work for me. but I ran rvm get stable --auto-dotfiles and it began working as desired.

Hope it helps

查看更多
贪生不怕死
4楼-- · 2019-01-10 00:42

Maybe is not the best way to resolve this, but I added this line at the botton of my .zshrc (it will work in .bashrc too!)

export PATH="$GEM_HOME/bin:$PATH"
查看更多
地球回转人心会变
5楼-- · 2019-01-10 00:42

This isn't an answer to the question asked, but to the related question that most commenters/responders have asked -- Why do you need to put the rvm line at the bottom of the shell rc file?

The answer is simple.

  1. The rvm code which is loaded puts the rvm ruby binary directories at the "front" of $PATH, and
  2. .bashrc (or equivalent for your default shell) is read and interpreted line-by-line from top to bottom.

So imagine the following scenario :

$ 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

Clearly if something is present in the shell init file after the RVM line and makes any changes to $PATH, more specifically if it prepends directories to $PATH, then those changes will push the directories added by rvm down from their first position. RVM, when invoked, will find that its ruby binary directories are not at the very beginning of $PATH and BAM! you'll get the warning :) .

I hope that makes things clear.

查看更多
再贱就再见
6楼-- · 2019-01-10 00:51

I have a follow-up question to this (wish I could simply add comment - but I don't have enough credits). I had this very same issue - and when I followed the rvm script that was suggested using --auto-dotfiles, I got into trouble as it somehow the shell script deleted my .bashrc_profile file.

Anyway, I eventually came around to the same answer listed above, putting this line at the bottom of .bashrc file. [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

Did you happen to find why that works the way it does, and not with the line in the middle of .bashrc file? Do you have some clarity around the way Unix is loading the environment variable that makes RVM work in one instance and not in another?

查看更多
▲ chillily
7楼-- · 2019-01-10 00:52

I have found this command to be very usefull. It solve my case. So if anyone is having the same issue, give this a try: rvm get stable --auto-dotfiles

查看更多
登录 后发表回答