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) закройте терминал и снова откройте его