Как изменить версию 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"

rvm_path=/home/myuser/.rvm . /home/myuser/.rvm/scripts/rvm
Хосе Альбан


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 решило проблему для меня.


1

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


Не используйте неавторизованные источники для установки 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.

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


0

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

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


0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.