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.

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

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


@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

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


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


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!


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"

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.


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.


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

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)

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.