Contexte
J'entre dans Ruby 2.x et Rails 4.x, sur un MacBook utilisant OS X El Capitan (10.11.3), en utilisant le shell de poisson, en utilisant l'intégration répertoriée sur cette page: RVM - Fish Shell (Intégration)
Problème
Lors de l' exécution de diverses commandes telles que rvm version
, rvm install ...
, rvm use ...
, rvm --default ...
, etc., je reçois le message d'erreur suivant:
/var/folders/2w/zhgybz7d25s1gdy41qdxwp48001gfh/T/rvm.fish.Pqd0CuZRJW: shell_session_update: command not found
La recherche rapide sur Google ne renvoie aucun résultat connexe qui pourrait m'aider à identifier et / ou à résoudre le problème, comme cela a fonctionné pour bon nombre de mes autres problèmes de configuration du développement.
J'ai fait une recherche de texte rapide dans le rvm.fish
fichier de fonctions, sous le .config/fish
répertoire, et également à l'intérieur de l' $HOME/.rvm/bin/rvm
exécutable principal, et je n'ai pas vu de commande telle shell_session_update
qu'être appelée directement dans ce fichier.
Question
Est-ce que quelqu'un sait pourquoi cela se produit et comment y remédier? Je suis une personne qui aime réparer les choses devant moi, de sorte que seules les choses sur lesquelles je dois agir apparaissent devant moi, donc je voudrais supprimer ce message d'erreur / d'avertissement. :)
PS Une version Ruby particulière (2.0.0) que j'essayais d'installer et d'utiliser, semble fonctionner correctement, même dans la même session de terminal (iTerm (2)), sans avoir à la redémarrer. Depuis, j'ai fermé celle-ci et j'ai créé une nouvelle session de terminal, et je vois toujours le message apparaître lors de l'exécution des différentes commandes susmentionnées.
shell_session_update
est une fonction Bash installée par OS X dans/etc/bashrc_Apple_Terminal
, donc il est probable que quelque chose dans les commandes Bash que RVM exécute la produit en sortie.Réponses:
TL; DR: assurez-vous que RVM est à jour au moins à 1.26.11 en réinstallant ou en émettant la commande
rvm get head
, et n'est initialisé qu'une seule fois par environnement de terminal.Résultat
Finalement, j'ai pu réparer mon environnement. Je publierai quelques informations concernant mon problème spécifique dans le but d'aider certains, même si d'autres peuvent avoir le même symptôme mais une autre cause profonde.
Cause
Une partie du problème racine provenait de RVM et de la façon dont il était initialisé pour mes environnements de ligne de commande. J'avais trouvé deux façons différentes de le faire, d'autant plus qu'une méthode supplémentaire a été spécialement conçue pour l'
fish
environnement shell.Il semble que la cause profonde soit:
fish
, et étaient exécutées dans mon autre environnement de terminalbash
, ou vice versa. Cela peut être vu dans mes détails ci-dessous où lebash
CHEMIN cassé a certains des chemins délimités par:
s, mais d'autres également inclus par des espaces, ce qui est une syntaxe incorrecte pourbash
, mais correcte pourfish
.Ensuite, l'autre partie du problème racine était qu'il semble qu'un bogue lié à RVM / direnv s'est glissé récemment concernant la fonction de déroutement. J'ai probablement rencontré cela à nouveau en ayant l'une des autres versions problématiques de RVM qui pourraient être causées par:
curl -sSL https://get.rvm.io | bash
rvm get head
rvm_autoupdate_flag=2
à~/.rvmrc
Ce problème devrait être résolu à partir du 30 mars 2016 ou de la version 1.26.11:
L'histoire
Après avoir combattu avec les utilitaires GNU pour effectuer une recherche complète du système de fichiers, jetant un œil à l'intérieur du contenu du fichier, j'ai utilisé Atom pour faire plus de succès, et j'ai constaté que la seule occurrence de
shell_session_update
était trouvée dans le/etc/bashrc_Apple_Terminal
fichier mentionné par Zanchey (en plus des fichiers d'historique) et autres choses de ce genre). Je ne sais pas non plus pourquoi cela a été exécuté parce que j'utilisais iTerm (2), et la valeur de$TERM_PROGRAM
dans ce cas estiTerm.app
et nonApple_Terminal
.Cela n'a pas non plus aidé que, pour une raison quelconque, j'ai dû gérer l'installation RVM plus d'une fois, en passant par le processus d'installation, qui apparemment ajoute déjà la configuration à plusieurs `` fichiers de points '', où j'avais également ajouté manuellement certaines ou les lignes .
Parallèlement à cela, j'avais créé un
.bashrc
fichier et je l'avais lié à partir.bash_profile
de mon Mac, car il n'existait apparemment pas par défaut. J'avais déjà lu sur un système Linux qui, par convention,.bash_profile
est bon pour certaines personnalisations et.bashrc
bon pour d'autres comme la définition d'alias et de fonctions utilisateur, ou vice versa. Je n'étais donc pas habitué à regarder à l'intérieur du.bash_profile
fichier, et surtout pas le.profile
fichier, le tout dans le répertoire utilisateur, que le système similaire copie également. N'oublions pas non plus qu'unpath_helper
est dans le mix (!), Mais ne semble pas avoir contribué à des problèmes.Les façons possibles de configurer l'environnement, qui peuvent être correctes ou non, sont les suivantes:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
export PATH="$PATH:$HOME/.rvm/bin"
(comme la dernière ligne qui modifie laPATH
variable juste avant que le contrôle ne soit remis à l'utilisateur.rvm default
(PATH
Doit également être la dernière ligne de modification. De: StackOverflow - Obtenir "Attention! PATH n'est pas correctement configuré" lorsque vous utilisez rvm, utilisez 2.0.0 --default )Plus de détails
Pour une verbosité plus incroyable, voici quelques exemples de chemins que j'ai capturés entre différents environnements lors du débogage du problème:
CHEMIN de poisson original (cassé)
Un poisson "naturellement" meilleur
Chemin de bash original (cassé)
CHEMIN BASH fixe 'manuellement'
"Naturellement" mieux bash PATH
Remarques:
.bashrc
et ainsi de suite, puis les ai finalement exécutés une fois le problème résolu.la source
rvm get head
puisrvm reinstall {version}
pour chaque version a fini par corriger pour moicurl -sSL https://get.rvm.io | bash -s head --ruby
<rvm sourcing line>
à la fin dans mon.bash_profile
. Fixé.Moi aussi, j'ai eu le même problème. Plus tard, j'ai constaté qu'il y avait déjà un problème dans le dépôt rvm pour cela. Et ils l'ont corrigé dans l'une des demandes de tirage.
Pour résoudre ce problème, mettez à niveau le rvm vers la dernière version ou pointez-le sur la révision de développement actuelle.
Pour plus de détails, reportez-vous à cet article .
la source