Установка rvm не работает: «RVM - это не функция» - PullRequest
225 голосов
/ 18 февраля 2012

Я только что установил RVM, но не могу заставить его работать. У меня есть такая строка в конце моего .profile файла:

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

Я пытался запустить source .profile и перезапустить терминал, но все же, когда я запускаю rvm use 1.9.2, я получаю:

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

Моя система - Ubuntu 11.10.

Ответы [ 20 ]

420 голосов
/ 19 июня 2012

Вам нужно запустить следующее

$ source ~/.rvm/scripts/rvm

затем запустите это

$ type rvm | head -n 1

и если вы получите

rvm is a function

проблема решена.

Вам также нужно запустить user$ rvm requirements, чтобы увидеть требования к зависимости для вашей операционной системы

Источник: https://rvm.io/rvm/install/

Я забыл упомянуть, что вам нужно поместить этот код в файл ~ / .bashrc или ~ / .zshrc, и вам не нужно будет снова писать этот код. Ура!

227 голосов
/ 18 февраля 2012

Вы не используете оболочку для входа.

Процесс включения флага входа в систему описан здесь , также некоторые подробности о том, что такое оболочка входа в систему, можно найти здесь .

Таким образом, вам необходимо проверить опцию «Запуск от имени оболочки входа» в настройках терминала Gnome. После этой установки флаг необходимо открыть новый терминал.

Иногда требуется установить команду на /bin/bash --login.


Для удаленных соединений важно понимать разницу между выполнением интерактивного ssh сеанса и выполнением отдельных команд.

Во время работы ssh server и последующей интерактивной работы с сервером вы используете оболочку входа по умолчанию, и это нормально, но для ssh server "command" вы не используете оболочку входа в систему и потребуется запустить ее с ssh server 'bash -lc "command"' .

Любой удаленный вызов может иметь ту же проблему, что и выполнение одной команды с ssh.

101 голосов
/ 19 апреля 2013

Чтобы навсегда решить эту проблему, просто вырезайте / вставляйте следующую строку:

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

От: ~/.bash_profile файл

До: ~/.bashrc файл

Причина, по которой это работает, заключается в том, что .bashrc выполняется при каждом входе в терминал, а .bash_profile при каждом входе в систему.Вот почему решение /bin/bash --login работает, но вы должны делать это каждый раз, когда входите в терминал.Таким образом, вы настроены до следующего формата, и к тому времени вы все забудете:)

29 голосов
/ 05 мая 2014

Я тоже сталкивался с этой проблемой.Наконец я выполнил эту строку на терминале.

source ~/.rvm/scripts/rvm

Проблема исправлена.Потому что эта строка сделает экземпляр RVM функцией на определенное время.

21 голосов
/ 05 апреля 2012

Последний RVM (rvm 1.11.6 (стабильный)) перестал работать в Ubuntu (10.10 - 64 бит - всезнайка или что-то еще) - я продолжал получать

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

Раньше я получал сообщение, но 'rvm 1.9.3-p0@rails321' работал бы.Теперь это не сработает - вы не сможете изменить наборы гемов вообще.

Ничего не получалось, пока я не нашел это - сделайте эту строку LAST в /home/your-name/.bashrc

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

9 голосов
/ 12 декабря 2012

Как вы сказали, показанная ошибка может быть следующей.

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.

Как сказано выше, просто введите " / bin / bash --login " в вашем терминале (после перезапуска вашего терминала), затем введите команду 'rvm use 1.9.3' (например,), и он начнет использовать ту же версию.

Просто выполните команду 'ruby -v', чтобы подтвердить, что RVMиспользует обновленную версию Ruby.

8 голосов
/ 01 апреля 2014

У меня тоже была эта проблема при новой установке rvm, и ни один из ответов здесь не устранил ее. Зайдя на официальный сайт rvm, в разделе основы, они имеют следующую команду:

# от http://rvm.io/rvm/basics

source $ (rvm 1.9.3 do rvm env --path)

Вам следует изменить 1.9.3 на версию ruby, которая вам действительно нужна, и это сделает rvm функцией независимо от типа оболочки.

7 голосов
/ 23 сентября 2013

Может быть, вы можете попробовать ниже:

  • Ваш терминал ->
  • Редактировать ->
  • Настройки профиля ->
  • Заголовок и команда ->
  • Отметьте «Выполнить команду как оболочку входа»
  • Выполнено
6 голосов
/ 06 марта 2012

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

6 голосов
/ 07 мая 2015

Выполнить bash --login, а затем запустить rvm use 2.0.0.

...