RVM não é uma função, selecionar rubis com 'rvm use…' não funcionará

160

Listar as versões ruby

console:~$ rvm list

rvm rubies

ruby-2.0.0-p481 [ i686 ]

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

Tente usar uma versão específica do 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
fonte
1
O que você está tentando fazer?
Pavan
Qual terminal você usa? A configuração do shell de login difere por aplicativo de terminal. Como alternativa, você pode source $HOME/.profileou source $HOME/.bash_profileonde o rvm provavelmente definiu sua linha de inicialização.
Michael Berkowski 30/05
Você precisa executar seu console como um shell de login. Que sistema você tem?
BroiSatse 30/05
Terminal Gnome do Ubuntu 12.04 lts
user3678471
4
No caso você está se perguntando qual é a diferença entre um login vs shell não login: unix.stackexchange.com/questions/38175/...
stephenbez

Respostas:

236

Seu console não está sendo executado como um shell de logon e, portanto, não tem acesso à função rvm. Se você estiver executando o Ubuntu, poderá:

  1. Console aberto
  2. Selecione Editar -> Preferências do perfil
  3. Guia Selecionar: Título e comando
  4. Marque a caixa de seleção 'Executar comando como um shell de login'
  5. Reinicie o terminal
BroiSatse
fonte
1
Eu fiz isso, mas não funcionou. O problema persiste . Como remover rvm completamente?
User3678471
16
Obviamente, você precisará do seguinte em seu ~ / .profile [[-s "$ HOME / .rvm / scripts / rvm"]] &&. "$ HOME / .rvm / scripts / rvm"
nadersoliman
3
Eu acho que isso poderia ser explicado mais - "e, portanto, não tem acesso à função rvm"
matanster 17/09/16
1
Funcionou. Mas você pode dizer a diferença entre os dois?
Krishnadas PC
6
O que funciona para mim no OSX é/bin/bash --login; source ~/.rvm/scripts/rvm; rvm use 2.4.0
Jayesh
116

Digite bash --logindo seu terminal. E então dêrvm use 2.0.0

inquisitivo
fonte
@AdityaPednekar Então, às vezes a leitura da mensagem de erro / console realmente ajuda, 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.especifica os detalhes.
inquisitivo
Sim, ajuda a perceber o quão excessivamente complexo é usar em rvmcomparação comnvm
Jannis Ioannou
53

Parece que o seu rvm não carrega ".bash_profile" corretamente. Eu fiz para corrigi-lo no MAC OS X ou Ubuntu 14.04 abrindo o terminal e escrevendo:

source ~/.rvm/scripts/rvm
akbarbin
fonte
41

Meu env é OSX Yosemite. Teve o mesmo problema .... resolvido adicionando o seguinte

1) edite e adicione a seguinte linha ao arquivo .bash_profile .

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

2) Reinicie o terminal e tente o comando RVM novamente

John Varghese
fonte
2
Você pode adicionar isso a ~ / .bashrc ou ~ / .zshrc (se você estiver usando zsh) também.
21415 adridev
Se você não quiser ou não puder reiniciar o terminal, poderá executar source ~/.bash_profiledepois de editá-lo.
Andre Ravazzi 18/06
35

Se você não deseja que toda vez que abrir um terminal, faça a sugestão acima novamente, basta adicionar

source ~/.rvm/scripts/rvm

no fim de ~/.bashrc

hhzhu
fonte
Este ajudou.
Arup Rakshit 04/04/19
.. e precisa de um reinício?
gordie
16

O erro ocorre porque o rvm não está sendo executado como no shell de login. Portanto, tente o comando abaixo:

/bin/bash --login

Você poderá executar comandos rvm instantaneamente como shell de login no terminal.

Obrigado!

Sumit Munot
fonte
15

Mesmo princípio que as outras respostas, apenas pensei que era mais rápido do que reabrir terminais :)

bash -l -c "rvm use 2.0.0"
Vigintas Labakojis
fonte
Alguém deve ter uma resposta melhor do que todas essas. Este é o único item em todas as respostas a esta pergunta que funciona para mim, mas isso não é algo que eu queira fazer o tempo todo. Im no Mac OSX Sierra
djangofan
9

Você precisa adicionar source ~/.rvm/scripts/rvma ~/.your_shellrc file. A partir de agora, quando você carregar um shell, o rvm será carregado.

Por exemplo:

se você estiver usando o zsh shell, precisará adicionar um ~/.zshrcarquivo

se você estiver usando o bash shell, precisará adicionar um ~/.bashrcarquivo

E, em seguida, abra uma nova guia para ver o efeito.

Siva Praveen
fonte
7

Para mim no Ubuntu (18.08), adicionei a linha abaixo em .bashrc e funciona.

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

Por favor, adicione esta linha.

Arjun
fonte
1
Obrigado! Isso funcionou para mim no MacOS! Como sugestão, acho melhor usar ~para se referir ao caminho inicial do usuário: source ~/.rvm/scripts/rvm:-)
Giovanni Benussi
2

De uma nova instalação do Ubuntu 16.04

1) Terminal => Editar => Preferências do perfil

2) Guia Comando => Marque Executar comando como um shell de login

3) Feche e reabra o terminal

rvm --default use 2.2.4
WiredIn
fonte
0

FWIW- Eu também deparei com isso, foi no contexto de uma corrida de selênio cancelada. Talvez houvesse uma subcasca sendo instanciada e deixada no lugar. Fechar a janela do terminal e abrir uma nova era tudo o que eu precisava fazer. (macOS Sierra)

user8099101
fonte