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

ciekawy
źródło
@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
akbarbin
źródło
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

John Varghese
źródło
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

hhzhu
źródło
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!

Sumit Munot
źródło
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"
Vigintas Labakojis
źródło
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.

Siva Praveen
źródło
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ę.

Arjun
źródło
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
WiredIn
źródło
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)

user8099101
źródło