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

Настройки iTerm2 - Вход в систему

Я попытался изменить эти настройки для параметра "Команда" и с использованием рекомендованных /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) закройте терминал и снова откройте его

Другие вопросы по тегам