Jak mogę zmienić moją wersję Ruby za pomocą RVM?


111

Nie mogę zmienić aktualnej wersji Ruby:

➜  ~  rvm list

rvm rubies

   ruby-1.9.2-p290 [ x86_64 ]
   ruby-1.9.3-p0 [ x86_64 ]

➜  ~  rvm use ruby-1.9.3-p0

RVM is not a function, selecting rubies with 'rvm use ...' will not work.

czy na pewno poprawnie zainstalowałeś rvm? jakiego systemu operacyjnego używasz?
— Lesce

2
Dołącz wyniki rvm infodo swojego pytania.
— Tin Man

Miałem podobny problem instalując rvm z apt-get na Ubuntu 11.10, musiałem go usunąć i ponownie zainstalować z$ bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
— lesce

4
Czy masz funkcję ładowania RVM w skrypcie startowym powłoki? [[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"to kod do użycia. Jeśli masz zainstalowany RVM w swojej ścieżce, ale nie masz tego w swoim skrypcie startowym, możesz otrzymać RVM is not a functionbłąd.
— Michelle Tilley

To rozwiązanie działa dla mnie - rvm.io/integration/gnome-terminal
— gotqn

Odpowiedzi:


122

Naprawione. Musiałem dodać:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm"  # This loads RVM 

do .zshrc


57

Mnie też się to przydarzyło. Miałem:

export PATH=~/.rvm/bin:$PATH

Dodano w moim .bashrc.

Wszystko, co musiałem zrobić, to dodać kolejny

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

do tego samego pliku i zadziałało! Oczywiście po tym musisz ponownie uruchomić terminal.


1
miałem tę samą linię ([[-s "$ HOME / ...) w moim ~ / .bash_profile i to nie wydawało się" brać ", kiedy otworzyłem nowy terminal ... ale kiedy dodałem linię pod linią PATH w ~ / .bashrc, zadziałało - co oznacza, że ​​mogłem wpisać rvm używając 1.9.3 i natychmiast rozpoznałoby rvm jako polecenie bez konieczności wpisywania najpierw source ~ / .bash_profile - i ' Nie jestem osobą korzystającą z Linuksa, więc to mnie zdezorientowało, ale cieszę się, że to działa. Może ktoś może wyjaśnić moje zamieszanie.
— TimDog,

to świetnie, po prostu umieściłem tę linię w ~ / .bashrc, działa. ale ja też nie wiem dlaczego.
— Jack Ma

Tak, to działa. Ale za każdym razem, gdy ponownie uruchamiam komputer, muszę wydawać powyższe polecenia. Jeśli nie podam poleceń, oznacza to, że rvm nie jest funkcją.
— Apurva Mayank

11

Twoja powłoka nie wie o funkcji RVM. Po zainstalowaniu informuje, jak się tym zająć. Lub przejdź do strony instalacji w witrynie RVM i przejrzyj sekcję zatytułowaną „2. Załaduj RVM do sesji powłoki jako funkcję”

Uruchom to raz, aby dodać wiersz, który ładuje rvm do twojego ~ / .bash_profile:

$ echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile

lub dodaj go ręcznie. (Zauważ, że w niektórych systemach będziesz chciał umieścić go w innych miejscach, na przykład w moim systemie Mac OSX Lion, umieściłem go w ~ / .profile)


Używam systemu OS X Snow Leopard, umieszczenie tej linii w moim .profile załatwiło sprawę.
— Heldraug

9

(Kubuntu 11.10) ~/.bash_profileTeraz nazywa się~/.profile

echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.profile
source ~/.profile
rvm info # And now the fields display

6

Aby zmienić domyślną wersję ruby:

W Ubuntu 11.10
zmień ustawienia terminala GNOME:

Przejdź do terminala, a następnie postępuj zgodnie z poniższymi instrukcjami:

1.  Edit > Profile Preferences
2.  Open Title and Command Tab               
3.  Check Run Command as a login Shell 
4.  Restart terminal

Uruchom to polecenie na terminalu:

rvm --default use ruby_Version

5

Aby dodać wszystkie funkcje RVM do swojego .bash_profile, użyj następującego polecenia:

echo '[[ -s "$HOME/.rvm/scripts/rvm" ]] && . "$HOME/.rvm/scripts/rvm" # Load RVM function' >> ~/.bash_profile

Następnie należy ponownie załadować bieżącą powłokę lub otworzyć nową sesję terminala i wpisać następujące polecenie, aby ponownie załadować .bash_profile:

source .bash_profile

4

Powyższe rozwiązanie będzie działać tylko wtedy, gdy RVM jest zainstalowany dla bieżącego użytkownika. Bardziej ogólne rozwiązanie wykorzystałoby zmienną ścieżki RVM:

# The following code loads RVM as user or system install:
[[ -s "$rvm_path/scripts/rvm" ]] && . "$rvm_path/scripts/rvm"

rvm_path=/home/myuser/.rvm . /home/myuser/.rvm/scripts/rvm
— Jose Alban


3

Podczas czystej instalacji Ubuntu 12.04 napotkałem ten sam problem. Instalator RVM tworzy lub dołącza do pliku o nazwie ~ / .bash_login niezbędny fragment kodu, aby uniknąć pierwotnego problemu:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

Jednak nie wydaje się, aby było to wywoływane. Dodanie go do ~ / .bashrc rozwiązało problem.


1

Instalowanie RVM, patrz tutaj http://octopress.org/docs/setup/rvm/


Nie używaj nieautoryzowanych źródeł do instalowania RVM. Strona instalacji RVM mówi konkretnie: „Zwróć uwagę, że żadne zewnętrzne samouczki NIE są obsługiwane, niezależnie od tego, czy działają, czy nie. Samouczki są świetne, jednak spędziliśmy mnóstwo godzin roboczych na debugowaniu procesu instalacji. Skorzystaj z procesu (-ów) instalacji z tylko w tej witrynie, ponieważ są to jedyne obsługiwane typy i metody instalacji ”.
— Tin Man

1

W moim przypadku na Ubuntu wpis w ~ / .bashrc miał:

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

zamiast:

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

Zwróć uwagę na brakującą spację między. i „$ HOME.

Ponadto, jeśli jest to problem, powinieneś również zauważyć błąd u góry podczas uruchamiania terminala.


0

Miałem globalną instalację RVM, która uruchamia /etc/profile.d/rvm.sh. Jednak ten skrypt wymaga ustawienia BASH_VERSION lub ZSH_VERSION. Uciekałem z crontab, który używa "sh".

Stworzyłem skrypt opakowujący, który używa / bin / bash do źródła /etc/profile.d/rvm.sh.


0

Musisz zmienić preferencje emulatora terminala, aby zezwolić na powłokę logowania. Czasami wymagane jest użycie /bin/bash --loginjako polecenia.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.