RVM + Zsh "RVM - это не функция, выбор рубинов с помощью" rvm use ... "не будет работать"
Начну с того, что я не эксперт в командной строке, поэтому я почти не знаю, что делаю.
Я не могу заставить RVM и oh-my-zsh хорошо играть вместе. Я перепробовал несколько разных решений, некоторые на SO, но ничего, что я нашел, похоже, не решило проблему.
Изначально кто-то еще настраивал RVM на моей машине. Позже я сам установил "о-о-о-о", и помню, что при этом у меня было много проблем.
мой .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 установлены на "Оболочка входа" в соответствии с рекомендациями RVM
Я попытался изменить эти настройки для параметра "Команда" и с использованием рекомендованных /bin/bash/ --login
как команда, однако zsh больше не работает, когда это происходит. Изменение команды на /bin/zsh/ --login
позволяет Zsh работать снова, но не решает проблему, так как я все еще получаю ошибку "RVM не является функцией" при попытке запустить 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 с ой-мой-zsh
- RVM 1.5.1
4 ответа
Оказывается, 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"
Теперь работает правильно, и я могу переключаться между рубинами.
Мне просто нужно было добавить
source $HOME/.rvm/scripts/rvm
на мой ~/.zshrc, и он начал работать, после того же сообщения об ошибке, как в этом вопросе SO.
Ответ @trustkr работал для меня, но хотел бы добавить...
Я столкнулся с этой проблемой сразу после установки rvm. Для того, чтобы
source
чтобы работать в файле ~/.zshrc, вам нужно либо начать новый сеанс терминала и работать там, либо вы можете запустить
source ~/.rvm/scripts/rvm
в том же терминальном сеансе, в котором вы установили.
[Mac OS 10.10.5 - iTerm - zsh]
У меня была такая же проблема, добавил эту одну строку в конце файла.zshrc
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
и работает теперь все отлично работает на моей операционной системе Ubuntu 16.04:)
Вам необходимо запустить следующее:
$ источник ~/.rvm/scripts/rvm
затем запустите это
$ type rvm | голова -n 1
и результат будет как
rvm - это функция оболочки из /home/sun/.rvm/scripts/cli
Надеюсь, это поможет!
Другое решение:
1) В терминале запускаем:
which rvm
Вывод в моем случае ---> / usr / share / rvm
2) Открыть файл.zshrc
nano ~/.zshrc
добавьте "source + the_path_to_your_rvm + / scripts / rvm", в моем случае это:
source /usr/share/rvm/scripts/rvm
3) сохранить файл (.zshrc)
4) закройте терминал и снова откройте его