RVM nie działa w ZSH

96

Chciałbym wypróbować powłokę ZSH na moim Macu, ale dużo pracuję nad Ruby i Railsami, więc często używam RVM. Problem polega na tym, że nie mogę zmusić RVM do pracy w ZSH i działa dobrze w domyślnej powłoce 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

Mogę zdecydowanie potwierdzić, że RVM jest zainstalowany, podobnie jak Ruby 1.9.2 pod RVM; Używam go cały czas w Bash. Prowadzenie rvm listw ZSH pokazuje to, co ciekawe:

rvm rubies

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

Dzieje się tak na moim iMacu i MacBooku Pro. Używam OS X 10.6.6 na obu, ZSH 4.3.9 na iMacu (4.3.10 na laptopie). Nie ma jeszcze nic wyszukanego jak oh-my-zsh.

Próbowałem przejrzeć dokumentację na stronie RVM , ale nic mi tam nie pomogło.

swilliams
źródło

Odpowiedzi:

276

Czy masz tę linię w swoim ~ / .zshrc ?

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" 
intellidiot
źródło
2
Hahaha, zupełnie zapomniałem o tej prostej rzeczy. Teraz denerwuje mnie mój upór, że nie przyszedłem tu wcześniej. Dziękuję Ci :).
swilliams
6
Zapraszamy. Czasami to się zdarza :) Jedna przydatna rzecz, którą zrobiłem, aby zachować moje stare ustawienia: "source ~ / .profile" i "source ~ / .bash_profile" w moim ~ / .zshrc. Dzięki temu mój plik .zshrc jest nieco czystszy.
intellidiot
3
Odkryłem, że kiedy użyłem oh-my-zsh do dostosowania zsh, dodałem kilka ścieżek do .zshrc, które wziął z mojej istniejącej powłoki - obejmowało to ścieżki dodane przez rvm pod bash.
Luke Chadwick
1
Spędziłem całe wieki, próbując to [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"rozgryźć , ponieważ wiersz jest w moim .zlogin, ale przypuszczam, że nie używał go podczas otwierania nowych okien terminala na moim Macu (10.7.3, o mój zsh). Dodanie go do .zshrc też działało, ale według tego komentarza stackoverflow , .zshrc jest niewłaściwym miejscem do umieszczenia tego?
waffl
5
Upewnij się również, że ścieżka do $ HOME / .rvm / bin znajduje się przed / usr / bin, w przeciwnym razie możesz wywoływać plik wykonywalny Ruby dostarczany z systemem OS X. Możesz sprawdzić pierwszeństwo, wpisując „gdzie ruby” w ZSH .
Nietrwały Dave,
22

Uwaga marzec 2014:

Z najnowszym RVM, następująca linia:

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

nie jest już potrzebne i nie powinno być w twoim ~/.zshrc.

Dokumentacja została zaktualizowana w dokumentacji RVM z Zsh :

Upewnij się, że w preferencjach iTerm2: opcja powłoki logowania jest ustawiona (nie używaj opcji Polecenie). Jest to wymagane, aby RVM działał.

Jeśli nadal otrzymujesz rvm nie jest błędem funkcji w iTerm, spróbuj:

rvm get stable --auto-dotfiles
raviolicode
źródło
Przynajmniej w mojej instalacji Arch Linuksa xterm nie używa powłoki logowania i dlatego rvm nie wydaje się być poprawnie skonfigurowany, nawet uruchamiając to polecenie.
ioquatix,
4

Uwaga listopad 2014

Instrukcje instalacji rvm ostrzegają, że .zshrc nie zawiera zmiennej $ PATH podczas ustawiania PATH, tym samym zastępując zawartość PATH bez względu na to, co już istnieje w PATH.

Aby temu zaradzić, dodaję teraz PATH, aby mieć, .rvm/bina następnie dodaję $PATH na początku ustawienia PATHw drugiej linii:

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"
aaronbartell
źródło
1

Miałem ten sam problem, rozwiązałem używając tego po instalacji "ruby on rails":

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

i

source ~/.zshrc
Isa Souza
źródło
0

Używam zsh i miałem [[-s "$ HOME / .rvm / scripts / rvm"]] &&. „$ HOME / .rvm / scripts / rvm” w moim pliku .zshrc, ale otrzymywał błąd analizy: 404.

Kiedy przeniosłem tę linię do pliku .profile, błąd ustał. Wygląda na to, że było to w konflikcie z czymś w moim pliku .zshrc i być może uruchomienie go w pliku .profile pozwoliło uniknąć niezgodności pliku .zshrc. Nie mogłem

Tim
źródło