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

Начну с того, что я не эксперт в командной строке, поэтому я просто не знаю, что я делаю.

Я не могу заставить RVM и oh-my-zsh играть вместе. Я пробовал несколько различных решений, размещенных вокруг, некоторые из них, но ничего, что я нашел, кажется, исправляет проблему.

Изначально кто-то настраивал RVM на моем компьютере. Я позже установил oh-my-zsh и помню, что у меня много неприятностей.

Мой .zhsrc файл полностью по умолчанию, за исключением этих двух строк

export PATH=$HOME/bin:/usr/local/bin:/usr/local/rvm/bin:$PATH

#pretty sure this line does nothing, although I've seen this fix around
# several places. I noticed that I don't seem to have an .rvm file in my 
# home directory which would be an issue, but I have no idea how to 
# go about correcting this.
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 

Я добавил директиву /usr/local/rvm в директиву Path, так как zsh возвращает zsh: rvm command not found без нее. В противном случае выполняется большая команда rvm, за исключением rvm use, которая выдает следующую ошибку:

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.

Я предусмотрел, что настройки профиля в моем профиле в iTerm2 установлены на "Login Shell", как рекомендовано RVM

iTerm2 Preferences - Login Shell

Я попытался изменить эти настройки на параметр "Command" и использовать рекомендуемую /bin/bash/ --login как команду, однако zsh больше не работает, когда это происходит. Изменение команды на /bin/zsh/ --login позволяет zsh работать снова, но не решает проблему, поскольку я все еще получаю ошибку "RVM is not a function" при попытке запустить rvm use

Рубль по умолчанию в RVM установлен в 2.0.0. Я могу запустить ruby -v в своей домашней папке и получить выход версии ruby, который показывает версию по умолчанию.

Работая над проектами rails, я могу запускать все команды rails, если Gemfile указывает ruby ​​2.0.0 по умолчанию. Однако в проекте, который использует другую версию, я получаю следующую ошибку:

Your Ruby version is 2.0.0, but your Gemfile specified 1.9.3

Тогда я не могу запустить rvm use 1.9.3, поскольку он возвращает вышеупомянутую ошибку.

Как я могу заставить zsh играть хорошо с RVM?

Некоторая информация о моей настройке:

  • Mac OSX 10.9.1 (Mavericks)
  • iTerm2
  • Zsh 5.0.2 с oh-my-zsh
  • RVM 1.5.1

Ответ 1

Оказывается, что RVM установлен неправильно. Когда я изначально установил RVM, я считаю, что сделал это с помощью команды sudo, которая запускала многопользовательскую установку (установлена ​​на /usr/local/rvm), а не на одного пользователя (должна быть в ~/.rvm/scrips/rvm), поэтому все опубликованные решения не работали для меня.

Мне пришлось удалить RVM с помощью rvm implode. Были некоторые проблемы с разрешениями, поэтому мне пришлось вручную входить и удалять файлы, которые нельзя было удалить. Выполните команду curl для повторной установки RVM и теперь она установлена ​​в правильном месте.

Sourcing RVM в моем .zshrc с [[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" теперь работает правильно, и я могу переключаться между рубинами.

Ответ 2

Для меня мне просто пришлось добавить

source $HOME/.rvm/scripts/rvm

к моему ~/.zshrc, и он начал работать, после того же сообщения об ошибке, что и в этом вопросе SO.

Ответ 3

Ответ @trustkr работал у меня, но хотел бы добавить...

Я столкнулся с этой проблемой сразу после установки rvm. Для того, чтобы

source

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

source ~/.rvm/scripts/rvm

в том же сеансе терминала, на котором вы установили.

[Mac OS 10.10.5 - iTerm - zsh]

Ответ 4

У меня была такая же проблема, добавив эту строку в конец .zshrc файла

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

и работает теперь все отлично работает на моей операционной системе ubuntu 16.04:)

Ответ 5

Другое решение:

1) В терминале запустите:

which rvm

Вывод в моем случае ---> /usr/share/rvm

2) Открыть файл .zshrc

nano ~/.zshrc

добавьте "источник + the_path_to_your_rvm + /scripts/rvm", в моем случае это:

source /usr/share/rvm/scripts/rvm

3) сохранить файл (.zshrc)

4) закройте терминал и снова откройте его