RVM не является функцией, выбор рубинов с помощью «rvm use…» не будет работать

160

Перечислите рубиновые версии

console:~$ rvm list

rvm rubies

ruby-2.0.0-p481 [ i686 ]

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

Попробуйте использовать конкретную версию 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.
user3678471
источник
1
Что ты пытаешься сделать?
Паван
Какой терминал вы используете? Настройка оболочки входа в систему зависит от приложения терминала. В качестве альтернативы вы можете source $HOME/.profileили source $HOME/.bash_profileгде rvm, вероятно, определил свою строку инициализации.
Майкл Берковски
Вам необходимо запустить консоль в качестве оболочки для входа. Какая у вас система?
BroiSatse
Терминал Gnome Ubuntu 12.04
lts
4
Если вам интересно, в чем разница между логином и не-оболочкой: unix.stackexchange.com/questions/38175/…
stephenbez

Ответы:

237

Ваша консоль не работает как оболочка входа в систему и, следовательно, не имеет доступа к функции rvm. Если вы используете Ubuntu, вы можете:

  1. Открытая консоль
  2. Выберите «Правка» -> «Настройки профиля».
  3. Выберите вкладку: Название и Команда
  4. Флажок «Выполнить команду как оболочку входа»
  5. Перезапустить терминал
BroiSatse
источник
1
Я сделал это, но не сработало. Проблема сохраняется. Как полностью удалить rvm?
user3678471
16
Конечно, вам понадобится следующее в вашем ~ / .profile [[-s "$ HOME / .rvm / scripts / rvm"]] &&. "$ HOME / .rvm / scripts / rvm"
nadersoliman
3
Я думаю, что это можно объяснить более - «и, следовательно, не имеют доступа к функции rvm»
matanster
1
Это сработало. Бу вы можете сказать разницу между этими двумя?
Кришнадас ПК
6
То, что работает для меня на OSX,/bin/bash --login; source ~/.rvm/scripts/rvm; rvm use 2.4.0
Jayesh
116

Введите bash --loginс вашего терминала. А потом датьrvm use 2.0.0

любознательный
источник
@AdityaPednekar Итак, иногда чтение сообщения об ошибке / консоли действительно помогает, 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.указывает детали.
любопытно
Да, это помогает понять, насколько неоправданно сложно это использовать rvmпо сравнению сnvm
Яннис Иоанну
53

Кажется, ваш rvm не загружает ".bash_profile" должным образом. Я сделал, чтобы исправить это в MAC OS X или Ubuntu 14.04, открыв терминал и напишите:

source ~/.rvm/scripts/rvm
akbarbin
источник
41

Мой env - OSX Yosemite. Была ли та же проблема .... решена добавлением следующего

1) отредактируйте и добавьте следующую строку в файл .bash_profile .

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

2) Перезапустите терминал и попробуйте команду RVM снова

Джон Варгезе
источник
2
Вы также можете добавить это в ~ / .bashrc или ~ / .zshrc (если вы используете zsh).
adridev
Если вы не хотите или не можете перезапустить терминал, вы можете запустить его source ~/.bash_profileпосле редактирования.
Андре Равацци
35

Если вы не хотите, чтобы каждый раз, когда вы открываете терминал, сделайте предложение выше, просто добавьте

source ~/.rvm/scripts/rvm

в конце ~/.bashrc

hhzhu
источник
Этот помог.
Arup Rakshit
.. и нуждается в перезагрузке?
Горди
16

Ошибка из-за того, что rvm не работает как в оболочке входа в систему. Поэтому попробуйте следующую команду:

/bin/bash --login

Вы сможете мгновенно запускать команды rvm в качестве логина в терминале.

Спасибо!

Сумит Мунот
источник
15

Тот же принцип, что и в других ответах, просто думал, что это быстрее, чем повторное открытие терминалов :)

bash -l -c "rvm use 2.0.0"
Vigintas Labakojis
источник
Кто-то должен придумать лучший ответ, чем все эти. Это единственный пункт во всех ответах на этот вопрос, который работает для меня, но это не то, чем я хочу заниматься все время. Я на Mac OSX Sierra
djangofan
9

Вам нужно добавить source ~/.rvm/scripts/rvmв~/.your_shellrc file . С этого момента, когда вы загрузите оболочку, будет загружен rvm.

Например:

если вы используете оболочку zsh, нужно добавить в ~/.zshrc файл

если вы используете оболочку bash, нужно добавить в ~/.bashrc файл

А затем откройте новую вкладку, чтобы увидеть эффект.

Шива Правин
источник
7

Для меня в Ubuntu (18.08) я добавил строку ниже .bashrc, и это работает.

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

Пожалуйста, добавьте эту строку.

Арджун
источник
1
Спасибо! Это работало для меня на MacOS! В качестве предложения, я думаю, что лучше использовать ~для ссылки на домашний путь пользователя: source ~/.rvm/scripts/rvm:-)
Джованни Бенусси
2

Из новой установки Ubuntu 16.04

1) Терминал => Редактировать => Настройки профиля

2) Command Tab => Проверить команду Run в качестве оболочки входа

3) Закройте и снова откройте терминал

rvm --default use 2.2.4
WiredIn
источник
0

Я только что столкнулся с этим, это было в контексте отмененного прогона селена. Возможно, был создан экземпляр оболочки и оставлен на месте. Я должен был закрыть это окно терминала и открыть новое. (macOS Сьерра)

user8099101
источник