简体   繁体   中英

RVM doesn't switch Rubies

I'm running Ruby 1.9.1p243 on CentOS, and I decided to install rvm to handle upgrading to 1.9.2 or downgrading to 1.8.7 (whichever turns out to work better for rails3).

I followed the instructions here: http://rvm.beginrescueend.com/rvm/install/ and everything installed correctly. I was able to compile and install Ruby 1.8.7, 1.9.1, and 1.9.2.

However, if I try to actually switch to one of the rvm installed Rubies, with rvm use 1.8.7, for example, nothing works. My system still uses the Ruby I have installed in /usr/local/bin/ruby.

An example of the output I get:

$ rvm use 1.8.7
$ ruby -v
ruby 1.9.1p243 (2009-07-16 revision 24175) [i686-linux]
$ which ruby
/usr/local/bin/ruby
$ rvm use 1.9.2
$ ruby -v
ruby 1.9.1p243 (2009-07-16 revision 24175) [i686-linux]
$ which ruby
/usr/local/bin/ruby

I have no idea why this is happening, and I can't seem to find anything online about the issue either. Any help would be appreciated.

Just came across the same problem.

Instead of appending the following script to ~/.bash_profile , append it to ~/.bashrc :

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # This loads RVM into a shell session.

And then restart the terminal.

Typically rvm support is easiest via IRC (#rvm on freenode) - in this particular case, what does running "type rvm | head -n1" show? it should show "rvm is a function". If not, that means the line to source rvm isn't being run correctly and hence switching doesn't work. Typically this means you either have a return in your ~/.bashrc or you missed adding the line to source rvm.

Your install is as root account. Try this in shell [[ -s "/usr/local/rvm/scripts/rvm" ]] && . "/usr/local/rvm/scripts/rvm"

before rvm switch operation. I add this line in my profile file and now all is ok.

I've been struggling with setting default rvm ruby to no avail, until I've tried this:

sudo bash -l -c 'rvm alias create default ruby-1.9.3-p392'

" sudo " is for writing into /usr/local/rvm/config/alias (in my example it would contain "default=ruby-1.9.3-p392")
" bash -l " is to make sure it runs all the scripts (/etc/profile, /etc/bash.bashrc, etc..) of login shell

Can be a problem of Terminal and you should try to close your Terminal's window and to open new one. :) Try again to see if it has changed...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM