web-dev-qa-db-fra.com

Erreur "RVM n'est pas une fonction"

RVM est installé sur ma machine (sous Mac OSX 10.6.8) correctement et fonctionne correctement. La chose étrange est que pour l'exécuter, je dois utiliser source ~/.rvm/scripts/rvm pour chaque nouvelle session. J'ai essayé d'en faire un lien symbolique vers /opt/local/bin/rvm, mais lorsqu'il est lancé, il ne fait rien. J'ai également essayé de créer un lien symbolique de ~/.rvm/bin/rvm à /opt/local/bin/rvm et, lorsque j'exécute rvm dans le terminal, il affiche la page d'aide, comme prévu. Mais lorsque j'essaie rvm use some_Ruby_version, il affiche toujours "RVM n'est pas une fonction, la sélection de rubis avec" utilisation RVM ... "ne fonctionnera pas.". Comment puis-je réparer cela?

Mon objectif est de parvenir à un point tel que je n'ai pas ai à taper la commande source à chaque session et que, pour une raison quelconque, ~/.profile ne s'exécute pas.

29
Jwosty

Je n'ai pas compris ce que ~/.profile fait correctement. Je devais changer ~/.bash_profile à la place. Problème résolu!

7
Jwosty

Vous devez source le script RVM dans la session en cours car il apporte des modifications à l'environnement Shell - et il est absolument impossible que cela soit fait à partir d'un processus enfant. Vos efforts pour exécuter RVM en tant que commande externe ne peuvent aboutir.

Pour résoudre ce problème, vous avez deux choix:

  1. Configurez votre émulateur de terminal pour qu'il lance un shell de connexion, plutôt qu'un shell sans connexion, afin que votre .profile soit chargé.
  2. Modifiez .bashrc en source RVM, ce qui fonctionne également pour les shells non connectés.

Pour faire la seconde, vous pouvez simplement ajouter à ~/.bashrc:

if test -f ~/.rvm/scripts/rvm; then
    [ "$(type -t rvm)" = "function" ] || source ~/.rvm/scripts/rvm
fi
42
Daniel Pittman

Si vous utilisez zsh comme Shell à la place de bash, vous devez:

1.

vi ~/.zshrc 

2 . Comme Matt a dit, ajoutez:

if test -f ~/.rvm/scripts/rvm; then
   [ "$(type -t rvm)" = "function" ] || source ~/.rvm/scripts/rvm
fi

3. Redémarrez Terminall 4. Terminé! 

rvm use 1.9.3

Wil travail

8
Alberto Fortes

Eh bien, avec Mountain Lion (10.8.3), l’édition de/etc/profile

et en ajoutant la ligne mentionnée précédemment au bas du fichier:

  if test -f ~/.rvm/scripts/rvm; then
        [ "$(type -t rvm)" = "function" ] || source ~/.rvm/scripts/rvm
    fi
3
damusix

J'ai eu le même problème. J'ai trouvé que le fichier .profile n'était pas mis à jour, j'ai donc ajouté la même commande que celle ajoutée dans .bash_profile:

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

Je ne sais pas si c'est la bonne façon, mais ça a fonctionné ...

2
okcomputer

Vous ne devriez pas avoir besoin de modifier quoi que ce soit comme le suggèrent d'autres. Il suffit d'aller dans les paramètres de votre terminal et sélectionnez la commande "Exécuter en tant que login Shell". Cela provoquera l’exécution de .profile sur la prochaine instance de terminal. Rouvrez votre terminal et vous devriez pouvoir utiliser rvm use 1.9.3 (ou la version que vous avez installée). 

Plus d'informations trouvées sur rvm.io (qui est également un excellent endroit pour des réponses) 

https://rvm.io/integration/gnome-terminal

2
DWils

Vous devez faire quelques réglages.

Ouvrez le terminal et lancez cette commande.

source ~/.rvm/scripts/rvm

puis allez à edit > Title and command et cochez Run command as login Shell

et vous avez terminé. Maintenant, vous n'avez pas besoin de spécifier la source à chaque fois.

1
Ramiz Raja

Ce qui me gênait, c'était de supposer que mon chemin était correct puisque j'en utilisais un que je pouvais exécuter manuellement.

Apparemment, différents exécutables ou scripts peuvent être utilisés et sont situés à des endroits différents. 

Je pensais que le chemin que Mina devrait utiliser était le suivant:

 /usr/local/rvm/bin/rvm

Quand en réalité c'était:

/usr/local/rvm/scripts/rvm
1
Nick Res

J'ai eu ce problème quand je suis devenu root. J'ai essayé plusieurs des solutions ci-dessus. Ce qui a finalement fonctionné a été de quitter root et d’être un utilisateur régulier. C'est ce dont j'avais besoin de toute façon.

0
look

Aucune de ces solutions ne semblait racheter mon problème qui concernait Ubuntu 12.04 LTS.

Ce que j'ai fait est le suivant:

  1. rvm get stable --auto-dotfiles comme indiqué dans la documentation RVM ici
  2. Ajout de source ~/.profile en tant que première ligne de: ~/.bash_profile

Je ne vais pas toutes ces étapes ont été documentées comme des erreurs de la ligne de commande RVM:

La RVM n’est pas une fonction, sélectionner les rubis avec "utilisation de la RVM ..." ne le fera pas travail. Vous devez modifier les préférences de votre émulateur de terminal pour autoriser login Shell. Parfois, il est nécessaire d'utiliser /bin/bash --login en tant que la commande. Veuillez visiter https://rvm.io/integration/gnome-terminal/ pour un exemple.

et 

  • AVERTISSEMENT: Vous avez le fichier '~/.profile', vous voudrez peut-être le charger, Pour ce faire, ajoutez la ligne suivante à '/home/nom_utilisateur/.profil.bash':

    source ~/.profile

0
jeffreynolte