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; Я весь час використовую його в Bash. Запуск 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 , але мені там нічого не допомогло.

Відповіді:


275

У вас є цей рядок у вашому ~ / .zshrc ?

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

2
Ха-ха-ха, зовсім забув про цю просту річ. Тепер мене дратує моя впертість за те, що я не прийшов сюди раніше. Дякую :).
Сільямс,

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 .
Швидкий Дейв,

22

Примітка, березень 2014 року:

З останньою RVM, такий рядок:

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

більше не потрібна, і вона не повинна бути у вашому ~/.zshrc.

Документація оновлена ​​в документації RVM за допомогою Zsh :

Переконайтеся, що в налаштуваннях iTerm2: встановлено параметр оболонки входу (не використовуйте параметр Command). Це потрібно для роботи RVM.

Якщо ви все ще отримуєте rvm не є помилкою функції на 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. Я не зміг

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.