RVM не работает в ZSH

96

Я хотел бы опробовать оболочку ZSH на своем Mac, но я также много занимаюсь разработкой Ruby и Rails, поэтому я тоже довольно часто использую RVM. Проблема в том, что я не могу заставить RVM работать в ZSH, и он отлично работает в оболочке Bash по умолчанию:

> zsh
> rvm 1.9.2
> ruby -v
ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0]
> which ruby
/usr/bin/ruby

Однозначно могу подтвердить, что установлен RVM, как и Ruby 1.9.2 под RVM; Я все время использую его в Баше. Запуск rvm listв ZSH показывает это интересно:

rvm rubies

   ruby-1.8.7-p302 [ x86_64 ]
=> ruby-1.9.2-p0 [ x86_64 ]

Это происходит как на моем iMac, так и на MacBook Pro. Я использую OS X 10.6.6 на обоих, ZSH 4.3.9 на iMac (4.3.10 на ноутбуке). Ничего особенного, вроде oh-my-zsh, пока нет.

Я попытался посмотреть документацию на сайте RVM , но там мне ничего не помогло.

Swilliams
источник

Ответы:

275

Есть ли у вас эта строка в ~ / .zshrc ?

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" 
интеллигент
источник
2
Хахаха, совсем забыл об этой простой вещи. Теперь меня раздражает мое упрямство, что я не приехал сюда раньше. Спасибо :).
swilliams
6
Добро пожаловать. Иногда такое случается :) Одна полезная вещь, которую я сделал, чтобы сохранить свои старые настройки: "source ~ / .profile" и "source ~ / .bash_profile" в моем ~ / .zshrc. Это также делает мой .zshrc немного чище.
intellidiot
3
Я обнаружил, что когда я использовал oh-my-zsh для настройки zsh, он добавил кучу путей к .zshrc, которые он взял из моей существующей оболочки - это были пути, добавленные rvm под bash.
Люк Чедвик,
1
Я потратил много времени, пытаясь понять это, так как строка [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"находится в моем .zlogin, но я полагаю, что она не использовала ее при открытии новых окон терминала на моем Mac (10.7.3, о мой zsh). Добавление его в .zshrc тоже сработало для меня, но, согласно этому комментарию stackoverflow , .zshrc - неправильное место для этого ??
waffl
5
Кроме того, убедитесь, что ваш путь к $ HOME / .rvm / bin предшествует / usr / bin, иначе вы можете вызывать исполняемый файл Ruby, поставляемый с OS X. Вы можете проверить приоритет, набрав 'where ruby' в ZSH .
Perishable Dave
22

Примечание март 2014 г .:

В последней версии RVM следующая строка:

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

больше не нужен, и его не должно быть в вашем ~/.zshrc.

Документация обновлена ​​в документации RVM с Zsh :

Убедитесь, что в настройках iTerm2: установлена опция оболочки входа (не используйте опцию Command). Это необходимо для работы RVM.

Если вы все еще получаете ошибку rvm is not a function на iTerm, попробуйте:

rvm get stable --auto-dotfiles
равиоликод
источник
По крайней мере, при моей установке Arch Linux xterm не использует оболочку входа в систему, и поэтому rvm, похоже, настроен неправильно, даже при выполнении этой команды.
ioquatix
5

Примечание ноябрь 2014 г.

Инструкции по установке rvm предупреждают, что .zshrc не включает $ PATH при установке PATH, тем самым заменяя содержимое PATH без учета того, что уже существует в PATH.

Чтобы исправить это, я теперь добавляю PATH, .rvm/binа затем добавляю $PATH в начале настройки PATHво второй строке:

export PATH="$PATH:$HOME/.rvm/bin" # Add RVM to PATH for scripting

export PATH=$PATH:"/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/git/bin:/usr/local/mysql/bin:/opt/local/bin"
Ааронбартелл
источник
1

У меня была такая же проблема, которую я решил использовать после установки "ruby on rails":

echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.zshrc

и

source ~/.zshrc
Иса Соуза
источник
0

Я использую zsh и имел [[-s "$ HOME / .rvm / scripts / rvm"]] &&. "$ HOME / .rvm / scripts / rvm" в моем файле .zshrc, но получал ошибку синтаксического анализа: 404.

Когда я переместил эту строку в файл .profile, ошибка прекратилась. Кажется, что-то конфликтует с моим файлом .zshrc, и, возможно, запуск его в .profile позволяет избежать несовместимости файла .zshrc. Я не смог

Тим
источник