RVM nie jest funkcją, wybranie rubinów za pomocą „rvm use…” nie będzie działać


160

Wypisz wersje ruby

console:~$ rvm list

rvm rubies

ruby-2.0.0-p481 [ i686 ]

# => - current
# =* - current && default
#  * - default

Spróbuj użyć określonej wersji ruby

console:~$ rvm use 2.0.0

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

You need to change your terminal emulator preferences to allow login shell.
Sometimes it is required to use `/bin/bash --login` as the command.
Please visit https://rvm.io/integration/gnome-terminal/ for a example.

1
Co próbujesz zrobić?
Pavan

Z jakiego terminala korzystasz? Ustawienie powłoki logowania różni się w zależności od aplikacji terminalowej. Alternatywnie mógłbyś source $HOME/.profilelub source $HOME/.bash_profiletam, gdzie rvm prawdopodobnie zdefiniował swoją linię init.
Michael Berkowski

Musisz uruchomić konsolę jako powłokę logowania. Jaki masz system?
BroiSatse

Terminal Gnome the Ubuntu 12.04
lts

4
W przypadku, gdy zastanawiasz się, jaka jest różnica między logowania vs non-powłokę logowania: unix.stackexchange.com/questions/38175/...
stephenbez

Odpowiedzi:


236

Twoja konsola nie działa jako powłoka logowania i dlatego nie ma dostępu do funkcji rvm. Jeśli używasz Ubuntu, możesz:

  1. Otwórz konsolę
  2. Wybierz Edycja -> Preferencje profilu
  3. Wybierz zakładkę: Tytuł i polecenie
  4. Pole wyboru „Uruchom polecenie jako powłoka logowania”
  5. Zrestartuj terminal

1
Zrobiłem to, ale nie zadziałało. Problem nadal występuje . Jak całkowicie usunąć rvm?
user3678471

16
Oczywiście będziesz potrzebować następujących elementów w swoim ~ / .profile [[-s "$ HOME / .rvm / scripts / rvm"]] &&. "$ HOME / .rvm / scripts / rvm"
nadersoliman,

3
Myślę, że można to wyjaśnić dokładniej - „i dlatego nie mam dostępu do funkcji rvm”
matanster

1
Zadziałało. Ale czy możesz odróżnić te dwie rzeczy?
Krishnadas PC,

6
To, co działa dla mnie na OSX, to/bin/bash --login; source ~/.rvm/scripts/rvm; rvm use 2.4.0
Jayesh

116

Wpisz bash --loginz terminala. A potem dajrvm use 2.0.0


@AdityaPednekar Tak więc czasami czytanie komunikatu błędu / konsoli faktycznie pomaga, RVM is not a function, selecting rubies with 'rvm use ...' will not work. You need to change your terminal emulator preferences to allow login shell. Sometimes it is required to use /bin/bash --login as the command. Please visit https://rvm.io/integration/gnome-terminal/ for a example.określa szczegóły.
dociekliwy

Tak, to pomaga zdać sobie sprawę, jak nieracjonalnie skomplikowane jest użycie w rvmporównaniu znvm
Jannis Ioannou

53

Wygląda na to, że twój rvm nie ładuje poprawnie pliku „.bash_profile”. Zrobiłem to naprawić w MAC OS X lub Ubuntu 14.04, otwierając terminal i pisząc:

source ~/.rvm/scripts/rvm

41

Mój env to OSX Yosemite. Miał ten sam problem ... rozwiązany przez dodanie następujących elementów

1) edytuj i dodaj następujący wiersz do pliku .bash_profile .

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

2) Zrestartuj terminal i spróbuj ponownie komendy RVM


2
Możesz dodać to do ~ / .bashrc lub ~ / .zshrc (jeśli używasz zsh).
adridev

Jeśli nie chcesz lub nie możesz ponownie uruchomić terminala, możesz go uruchomić source ~/.bash_profilepo edycji.
Andre Ravazzi

35

Jeśli nie chcesz tego za każdym razem, gdy otwierasz terminal, powtórz powyższą sugestię, po prostu dodaj

source ~/.rvm/scripts/rvm

na końcu ~/.bashrc


Ten pomógł.
Arup Rakshit

.. i wymaga ponownego uruchomienia?
gordie

16

Błąd jest spowodowany tym, że rvm nie działa tak jak w powłoce logowania. Dlatego wypróbuj poniższe polecenie:

/bin/bash --login

Będziesz mógł natychmiast uruchamiać polecenia rvm jako powłoka logowania w terminalu.

Dzięki!


15

Ta sama zasada co w przypadku innych odpowiedzi, po prostu pomyślałem, że to szybsze niż ponowne otwarcie terminali :)

bash -l -c "rvm use 2.0.0"

Ktoś powinien znaleźć lepszą odpowiedź niż te wszystkie. To jedyna pozycja we wszystkich odpowiedziach na to pytanie, która mi odpowiada, ale nie jest to coś, co chcę robić przez cały czas. Jestem na Mac OSX Sierra
djangofan

9

Musisz dodać source ~/.rvm/scripts/rvmdo~/.your_shellrc file . Od teraz, kiedy ładujesz powłokę, rvm będzie ładowany.

Na przykład:

jeśli używasz powłoki zsh, musisz dodać ~/.zshrc plik

jeśli używasz powłoki bash, musisz dodać ~/.bashrc plik

A następnie otwórz nową kartę, aby zobaczyć efekt.


7

U mnie w Ubuntu (18.08) dodałem poniższą linię w .bashrc i działa.

 source /home/username/.rvm/scripts/rvm

Dodaj tę linię.


1
Dzięki! To zadziałało dla mnie na MacOS! Jako sugestię, myślę, że lepiej jest ~odwołać się do ścieżki domowej użytkownika: source ~/.rvm/scripts/rvm:-)
Giovanni Benussi

2

Z nowej instalacji Ubuntu 16.04

1) Terminal => Edycja => Preferencje profilu

2) Karta Polecenie => Sprawdź polecenie Uruchom jako powłokę logowania

3) Zamknij i ponownie otwórz terminal

rvm --default use 2.2.4

0

FWIW - Właśnie to spotkałem, to było w kontekście odwołanego biegu selenu. Być może została utworzona instancja podpowłoki i pozostawiona na miejscu. Wystarczyło zamknąć to okno terminala i otworzyć nowe. (macOS Sierra)

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.