Getting "Warning! PATH is not properly set up" when doing rvm use 2.0.0 --default
RubyBashRvmRuby 2.0.Bash ProfileRuby Problem Overview
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
Ruby Solutions
Solution 1 - Ruby
I was stuck after I uninstalled rvm with
rvm implode
then after reinstalling rvm it received the same error message. After looking through wayne seguin's git hub page. He lists tools on his page and recommended using
rvm reset
after an installation. This fixed my error message. No PATH edits needed.
Solution 2 - Ruby
The answer was to put this:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
# Load RVM into a shell session *as a function*
at the BOTTOM (last line - important!) of my .bashrc file. I had it in my .bash_profile file (I am on Ubuntu) and that only partially worked leading to the confusing errors.
Solution 3 - Ruby
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"
Solution 4 - Ruby
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
Solution 5 - Ruby
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.
- The rvm code which is loaded puts the rvm ruby binary directories at the "front" of
$PATH
, and .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.
Solution 6 - Ruby
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.
Solution 7 - Ruby
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?
Solution 8 - Ruby
I was facing same issue. I found that in bashrc file
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
multiple entries for rvm. I commented one entry and its working fine.
#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
Solution 9 - Ruby
I cleaned out everything that had a .rvm in it from my PATH= line in my .zshrc
That fixed the issue for me, where the other answers here (sourcing the rvm script, or getting stable with auto dotfiles) didn't.
Solution 10 - Ruby
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
Solution 11 - Ruby
I ended up removing ~/.profile
, ~/.bashrc
and ~/.zshrc
.
Basically I only kept ~/.bash_profile
on my mac. And it works.
I think in my case, there are:
export PATH="$PATH:$HOME/.rvm/bin" [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session as a functionin these files, and those duplicate settings confused
rvm
Solution 12 - Ruby
Disclaimer
Cuz I mainly develop using python, so I am not sure the would this workaround give you a correct ruby env or just change the path and get rid of the warning
Background
In my case, I installed rvm
first, and then pyenv
later. The config for both of them will change $PATH
. From the warning, it seems that rvm always want to be the first in the path
$ echo $PATH
$HOME/.rvm/gems/ruby-2.6.3/bin: ......
But if you add eval "$(pyenv init -)"
as required by pyenv
, it will change your $PATH
to
$ echo $PATH
$HOME/.pyenv/shims:$HOME/.rvm/gems/ruby-2.6.3/bin: ......
My workaround
$ rvm use system
# Switch back to system ruby
$ rvm use ruby-2.6.3
# Switch to the version you need to use
rvm
will change the path to what it likes then you won't see the annoying warning again.
Solution 13 - Ruby
rvm install ruby-head
Fixed the issue for me - little time consuming but did the trick. Not sure if that made any unpronounced updates to my bash files.
Solution 14 - Ruby
It worked after commenting top 2 duplicate lines and adding them at bottom. Don't forget to restart the terminal for it to work.
#[[ -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/[email protected]/bin:$PATH"
export LDFLAGS="-L/usr/local/opt/[email protected]/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*
Solution 15 - Ruby
You can add
rvm_silence_path_mismatch_check_flag=1
to your ~/.rvmrc
file. That's what the warning message now suggests.
Solution 16 - Ruby
I FIXED THIS PROBLEM. TRY USE COMMAND LIKE THIS:
rvm use 2.0.0-p353
ADD -p353 or other you version detail to line end