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.

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

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


@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

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


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


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!


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"

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.


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.


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

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)

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.