Как изменить версию Ruby с помощью RVM?

111

Я не могу переключить текущую версию Ruby:

  ~  rvm list

rvm rubies

   ruby-1.9.2-p290 [ x86_64 ]
   ruby-1.9.3-p0 [ x86_64 ]

  ~  rvm use ruby-1.9.3-p0

RVM is not a function, selecting rubies with 'rvm use ...' will not work.
Дональд
источник
вы уверены, что правильно установили rvm? какую ОС вы используете?
lesce
2
Пожалуйста, приложите вывод rvm infoк вашему вопросу.
Железный Человек
У меня была аналогичная проблема при установке rvm с помощью apt-get на Ubuntu 11.10, мне пришлось удалить его и переустановить с помощью$ bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
lesce
4
Есть ли у вас функция загрузки RVM в сценарии запуска вашей оболочки? [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"это код для использования. Если на вашем пути установлен RVM, но его нет в сценарии запуска, вы можете получить сообщение об RVM is not a functionошибке.
Мишель Тилли
Это решение работает для меня - rvm.io/integration/gnome-terminal
gotqn

Ответы:

122

Починил это. Мне нужно было добавить:

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

к .zshrc

Дональд
источник
57

Это случилось и со мной. Я имел:

export PATH=~/.rvm/bin:$PATH

Добавлен в мой .bashrc.

Все, что мне нужно было сделать, это добавить еще один

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

в тот же файл, и это сработало! Конечно, после этого вам придется перезагрузить терминал.

Мальчик Митра
источник
1
у меня была такая же строка ([[-s "$ HOME / ...) в моем ~ / .bash_profile, и она, похоже, не" принимала ", когда я открывал новый терминал ... но когда я добавил строку ниже строки PATH в ~ / .bashrc, это действительно сработало - это означает, что я мог ввести rvm use 1.9.3, и он немедленно распознал бы rvm как команду без необходимости сначала вводить source ~ / .bash_profile - i ' Я не специалист по Linux, так что это меня смущает, но я рад, что это
сработало
это здорово, я просто поместил эту строку в ~ / .bashrc, она работает. но я также не знаю почему.
Джек Ма
Да, это работает. Но каждый раз, когда я перезагружаю свою машину, я должен подавать вышеупомянутые команды. Если я не предоставлю команды, будет сказано, что rvm не является функцией.
Apurva Mayank,
11

Ваша оболочка не знает о функции RVM. После установки он расскажет, как с этим справиться. Или перейдите на страницу установки на сайте RVM и ознакомьтесь с разделом под названием «2. Загрузите RVM в сеансы оболочки как функцию»

Выполните это один раз, чтобы добавить строку, загружающую rvm в ваш ~ / .bash_profile:

$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile

или добавьте вручную. (Обратите внимание, что в некоторых системах вы захотите разместить его в других местах, например, в моей системе Mac OSX Lion, я поместил его в ~ / .profile)

Джошуа Чик
источник
Я использую OS X Snow Leopard, размещение этой строки в моем .profile помогло мне.
Heldraug
9

(Kubuntu 11.10) ~/.bash_profileТеперь называется~/.profile

echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.profile
source ~/.profile
rvm info # And now the fields display
Линдсей
источник
6

Чтобы изменить версию ruby ​​по умолчанию:

В Ubuntu 11.10
измените настройки терминала GNOME:

Перейдите в Терминал и следуйте следующим инструкциям:

1.  Edit > Profile Preferences
2.  Open Title and Command Tab               
3.  Check Run Command as a login Shell 
4.  Restart terminal

Запустите эту команду на терминале:

rvm --default use ruby_Version
Маянк Райпуре
источник
5

Чтобы добавить все функции RVM в ваш .bash_profile, вы должны использовать следующую команду:

echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile

После этого вам следует перезагрузить текущую оболочку или открыть новый сеанс терминала и ввести следующую команду для перезагрузки .bash_profile:

source .bash_profile
Недоброе Привидение
источник
4

Вышеупомянутое решение будет работать, только если RVM установлен для текущего пользователя. Более общее решение будет использовать переменную пути RVM:

# The following code loads RVM as user or system install:
[[ -s "$rvm_path/scripts/rvm" ]] && . "$rvm_path/scripts/rvm"
user2408574
источник
rvm_path=/home/myuser/.rvm . /home/myuser/.rvm/scripts/rvm
Хосе Альбан
3

Мне просто нужно было вызвать источник ~/.bash_profile

Behzad
источник
3

При чистой установке Ubuntu 12.04 я столкнулся с той же проблемой. Установщик RVM создает или добавляет к файлу с именем ~ / .bash_login необходимый бит кода, чтобы избежать исходной проблемы:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

Однако, похоже, это не вызывается. Добавление его в ~ / .bashrc решило проблему для меня.

Gordonbanderson
источник
1

Установка RVM, см. Здесь http://octopress.org/docs/setup/rvm/

hahakubile
источник
Не используйте неавторизованные источники для установки RVM. На странице установки RVM прямо говорится: «Обратите внимание, что любые внешние учебные пособия НЕ поддерживаются независимо от того, работают они или нет. Учебники великолепны, однако мы потратили огромное количество человеко-часов на отладку процесса установки. Пожалуйста, используйте процесс (-ы) установки из только этот сайт, так как это единственные поддерживаемые типы и методы установки ».
Железный Человек
1

В моем случае в Ubuntu запись в ~ / .bashrc имела:

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

вместо того:

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

Обратите внимание на недостающий пробел между. и "$ HOME.

Кроме того, если это проблема, вы также должны заметить ошибку сверху при запуске терминала.

mohitj2007
источник
0

У меня была глобальная установка RVM, которая запускает /etc/profile.d/rvm.sh. Однако для этого сценария необходимо установить BASH_VERSION или ZSH_VERSION. Я работал с crontab, который использует "sh".

Я создал сценарий-оболочку, который использует / bin / bash в качестве источника /etc/profile.d/rvm.sh.

Dfrankow
источник
0

Вам необходимо изменить настройки эмулятора терминала, чтобы разрешить оболочку входа. Иногда требуется использовать /bin/bash --loginкак команду.

Моамен Абдельвахед
источник