RVM n'est pas une fonction, la sélection de rubis avec 'rvm use…' ne fonctionnera pas

160

Lister les versions ruby

console:~$ rvm list

rvm rubies

ruby-2.0.0-p481 [ i686 ]

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

Essayez d'utiliser une version spécifique de 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
la source
1
Qu'essayez-vous de faire?
Pavan
Quel terminal utilisez-vous? La configuration du shell de connexion diffère selon l'application de terminal. Sinon, vous pouvez source $HOME/.profileou source $HOME/.bash_profileoù rvm a probablement défini sa ligne d'initialisation.
Michael Berkowski
Vous devez exécuter votre console en tant que shell de connexion. Quel système avez-vous?
BroiSatse
Terminal Gnome the Ubuntu 12.04
lts
4
Au cas où vous vous demandez quelle est la différence entre un shell de connexion et non-login: unix.stackexchange.com/questions/38175/…
stephenbez

Réponses:

237

Votre console ne fonctionne pas en tant que shell de connexion et n'a donc pas accès à la fonction rvm. Si vous utilisez Ubuntu, vous pouvez:

  1. Ouvrir la console
  2. Sélectionnez Modifier -> Préférences de profil
  3. Sélectionnez l'onglet: Titre et commande
  4. Case à cocher 'Exécuter la commande en tant que shell de connexion'
  5. Redémarrer le terminal
BroiSatse
la source
1
J'ai fait ça mais je n'ai pas travaillé. Le problème persiste. Comment supprimer complètement rvm?
user3678471
16
Bien sûr, vous aurez besoin des éléments suivants dans votre ~ / .profile [[-s "$ HOME / .rvm / scripts / rvm"]] &&. "$ HOME / .rvm / scripts / rvm"
nadersoliman
3
Je pense que cela pourrait être expliqué plus - "et donc n'ont pas accès à la fonction rvm"
matanster
1
Ça a marché. Pouvez-vous faire la différence entre ces deux?
Krishnadas PC
6
Ce qui fonctionne pour moi sur OSX est/bin/bash --login; source ~/.rvm/scripts/rvm; rvm use 2.4.0
Jayesh
116

Tapez bash --logindepuis votre terminal. Et puis donnerrvm use 2.0.0

curieux
la source
@AdityaPednekar Donc, parfois la lecture du message d'erreur / console aide réellement, 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.spécifie les détails.
curieux
Ouais, cela aide à réaliser à quel point il est excessivement complexe à utiliser rvmpar rapport ànvm
Jannis Ioannou
53

Il semble que votre rvm ne charge pas correctement ".bash_profile". J'ai fait pour le réparer sous MAC OS X ou Ubuntu 14.04 en ouvrant le terminal et en écrivant:

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

Mon env est OSX Yosemite. Avait le même problème ... résolu en ajoutant ce qui suit

1) éditez et ajoutez la ligne suivante au fichier .bash_profile .

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

2) Redémarrez le terminal et réessayez la commande RVM

John Varghese
la source
2
Vous pouvez également l'ajouter à ~ / .bashrc ou ~ / .zshrc (si vous utilisez zsh).
adridev
Si vous ne voulez pas ou ne pouvez pas redémarrer le terminal, vous pouvez l'exécuter source ~/.bash_profileaprès l'avoir modifié.
Andre Ravazzi
35

Si vous ne le souhaitez pas à chaque fois que vous ouvrez un terminal, recommencez la suggestion ci-dessus, ajoutez simplement

source ~/.rvm/scripts/rvm

au bout du ~/.bashrc

hhzhu
la source
Celui-ci a aidé.
Arup Rakshit
.. et a besoin d'un redémarrage?
gordie le
16

L'erreur est due au fait que rvm ne fonctionne pas comme dans le shell de connexion. Essayez donc la commande ci-dessous:

/bin/bash --login

Vous pourrez exécuter les commandes rvm instantanément en tant que shell de connexion dans le terminal.

Merci!

Sumit Munot
la source
15

Même principe que les autres réponses, je pensais juste que c'était plus rapide que de rouvrir les terminaux :)

bash -l -c "rvm use 2.0.0"
Vigintas Labakojis
la source
Quelqu'un devrait trouver une meilleure réponse que toutes ces réponses. C'est le seul élément de toutes les réponses à cette question qui fonctionne pour moi, mais ce n'est pas quelque chose que je veux faire tout le temps. Im sur Mac OSX Sierra
djangofan
9

Vous devez ajouter source ~/.rvm/scripts/rvmà ~/.your_shellrc file. A partir de maintenant, lorsque vous chargez un shell, rvm sera chargé.

Par exemple:

si vous utilisez le shell zsh, vous devez ajouter un ~/.zshrcfichier

si vous utilisez le shell bash, vous devez ajouter un ~/.bashrcfichier

Et puis ouvrez un nouvel onglet pour voir l'effet.

Siva Praveen
la source
7

Pour moi dans Ubuntu (18.08), j'ai ajouté la ligne ci-dessous dans .bashrc et cela fonctionne.

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

Veuillez ajouter cette ligne.

Arjun
la source
1
Merci! Cela a fonctionné pour moi sur MacOS! À titre de suggestion, je pense qu'il est préférable d'utiliser ~pour faire référence au chemin d'accès à la maison de l'utilisateur: source ~/.rvm/scripts/rvm:-)
Giovanni Benussi
2

À partir d'une nouvelle installation d'Ubuntu 16.04

1) Terminal => Modifier => Préférences de profil

2) Onglet Commande => Vérifier la commande Exécuter en tant que shell de connexion

3) Fermer et rouvrir le terminal

rvm --default use 2.2.4
WiredIn
la source
0

FWIW - Je viens de rencontrer cela aussi, c'était dans le contexte d'une course de sélénium annulée. Peut-être qu'un sous-shell a été instancié et laissé en place. Fermer cette fenêtre de terminal et en ouvrir une nouvelle était tout ce que j'avais à faire. (macOS Sierra)

user8099101
la source