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.
donald
źródło
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

donald
źródło
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.

Chłopiec z Mitry
źródło
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)

Joshua Cheek
źródło
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
Lindsay
źródło
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
Mayank Raipure
źródło
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
Недоброе Привидение
źródło
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"
user2408574
źródło
rvm_path=/home/myuser/.rvm . /home/myuser/.rvm/scripts/rvm
Jose Alban
3

Musiałem tylko przywołać źródło ~/.bash_profile

Behzad
źródło
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.

gordonbanderson
źródło
1

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

hahakubile
źródło
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.

mohitj2007
źródło
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.

dfrankow
źródło
0

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

Moamen Abdelwahed
źródło