Як змінити свою версію 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 встановили правильно? яку ОС ви використовуєте?
зменшено

2
Будь ласка, додайте висновок rvm infoдо свого питання.
Бляшаний чоловік

У мене була подібна проблема, встановивши rvm з apt-get на Ubuntu 11.10, мені довелося його видалити та перевстановити$ bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
менше

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 використання 1.9.3, і він негайно розпізнає rvm як команду, не вимагаючи від мене першого джерела ~ / .bash_profile - i ' Я не людина з Linux, тому це мене бентежить, але я радий, що це
спрацювало

це чудово, я просто помістив цей рядок у ~ / .bashrc, він працює. але я також не знаю, чому.
Джек Ма

Так, це працює. Але кожен раз, коли я перезапускаю машину, я повинен давати вищезгадані команди. Якщо я не надаю команди, він говорить, що rvm не є функцією.
Апурва Маянк

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, який використовує "ш".

Я створив скрипт для обгортки, який використовує / bin / bash для вихідного /etc/profile.d/rvm.sh.


0

Вам потрібно змінити налаштування емулятора терміналу, щоб дозволити оболонку входу. Іноді його потрібно використовувати /bin/bash --loginяк команду.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.