214

List the ruby versions

console:~$ rvm list

rvm rubies

ruby-2.0.0-p481 [ i686 ]

# => - current
# =* - current && default
#  * - default

Try to use a specific version of ruby

console:~$ rvm use 2.0.0

RVM is not a function, selecting rubies with 'rvm use ...' will not work.

You need to change your terminal emulator preferences to allow login shell.
Sometimes it is required to use `/bin/bash --login` as the command.
Please visit https://rvm.io/integration/gnome-terminal/ for a example.
Arslan Ali
  • 17,418
  • 8
  • 58
  • 76
user3678471
  • 2,373
  • 2
  • 17
  • 18

15 Answers15

286

Your console is not running as a login shell and hence have no access to rvm function. If you are running Ubuntu, you can:

  1. Open console
  2. Select Edit -> Profile Preferences
  3. Select tab: Title and Command
  4. Check box 'Run command as a login shell'
  5. Restart terminal
BroiSatse
  • 44,031
  • 8
  • 61
  • 86
152

Type bash --login from your terminal. And then give rvm use 2.0.0

Martin Tournoij
  • 26,737
  • 24
  • 105
  • 146
inquisitive
  • 3,738
  • 6
  • 30
  • 56
  • @AdityaPednekar So, sometimes reading the error/console message actually helps, `RVM is not a function, selecting rubies with 'rvm use ...' will not work. You need to change your terminal emulator preferences to allow login shell. Sometimes it is required to use /bin/bash --login as the command. Please visit https://rvm.io/integration/gnome-terminal/ for a example.` specifies the details. – inquisitive Jul 10 '18 at 10:02
  • 4
    Yeah, It helps realize how unreasonably complex it is to use `rvm` compared to `nvm` – Jannis Ioannou Apr 30 '20 at 16:09
  • 1
    Thanks this worked for me and it saved lot of time. – Jagadeeswar Mar 25 '21 at 08:26
91

It seems like your rvm does not load ".bash_profile" properly. I have done to fix it in MAC OS X or Ubuntu 14.04 by opening terminal and write:

source ~/.rvm/scripts/rvm
akbarbin
  • 4,985
  • 1
  • 28
  • 31
59

My env is OSX Yosemite. Had the same issue .... solved by adding the following

1) edit and add the following line to .bash_profile file.

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"

2) Restart terminal and try RVM command again

Esmaeil MIRZAEE
  • 1,110
  • 11
  • 14
John Varghese
  • 591
  • 4
  • 2
48

If you don't want that every time you open a terminal, do the suggestion above again, just add

source ~/.rvm/scripts/rvm

at the end of ~/.bashrc

René Vogt
  • 43,056
  • 14
  • 77
  • 99
hhzhu
  • 599
  • 4
  • 6
27

The error is due to rvm is not running as in login shell. Hence try the below command:

/bin/bash --login

You will able run rvm commands instantly as login shell in terminal.

halfer
  • 19,824
  • 17
  • 99
  • 186
Sumit Munot
  • 3,748
  • 1
  • 32
  • 51
16

Same principle as other answers, just thought it was quicker than re-opening terminals :)

bash -l -c "rvm use 2.0.0"
Vigintas Labakojis
  • 1,039
  • 1
  • 15
  • 21
  • Someone should come up with a better answer than all of these. This is the only item in all the answers to this question that works for me but this is not something I want to do all the time. Im on Mac OSX Sierra – djangofan Jun 22 '17 at 01:06
12

You need to add source ~/.rvm/scripts/rvm to ~/.your_shellrc file. From now when you load a shell, rvm will be loaded.

For example:

if you are using zsh shell, need to add in ~/.zshrc file

if you are using bash shell, need to add in ~/.bashrc file

And then open a new tab to see the effect.

Siva Praveen
  • 2,213
  • 17
  • 20
12

I think this more generic solution

echo 'source "$HOME/.rvm/scripts/rvm"' >> ~/.bashrc
Kapil Bhosale
  • 153
  • 2
  • 8
9

For me in Ubuntu(18.08), I have added below line in .bashrc and it works.

 source /home/username/.rvm/scripts/rvm

Please add this line.

Arjun
  • 815
  • 1
  • 8
  • 18
9

Following work for me in ubuntu 19.1

source ~/.rvm/scripts/rvm
Sagar Jethi
  • 2,313
  • 20
  • 20
3

From a new Ubuntu 16.04 Installation

1) Terminal => Edit => Profile Preferences

2) Command Tab => Check Run command as a login shell

3) Close, and reopen terminal

rvm --default use 2.2.4
WiredIn
  • 4,157
  • 4
  • 27
  • 23
1

If RVM was installed with dedicated ubuntu RVM installer https://github.com/rvm/ubuntu_rvm the path to RVM scripts will be different /usr/share/rvm/scripts/rvm. So to add it to your .bashrc run the following command:

echo 'source "/usr/share/rvm/scripts/rvm"' >> ~/.bashrc
Mike Milkman
  • 583
  • 1
  • 7
  • 14
0

FWIW- I just ran across this as well, it was in the context of a cancelled selenium run. Perhaps there was a sub-shell being instantiated and left in place. Closing that terminal window and opening a new one was all I needed to do. (macOS Sierra)

0
     Usually this is caused by shell initialization files. Search for PATH=... entries.
     You can also re-add RVM to your profile by running: rvm get stable --auto-dotfiles
     To fix it temporarily in this shell session run: rvm use ruby-2.6.5
     To ignore this error add "rvm_silence_path_mismatch_check_flag=1" to your "~/.rvmrc" file.