J'utilise Ruby 2.x et Rails 4.x sur un MacBook sous OS X El Capitan (10.11.3), à l'aide du poisson Shell, en utilisant l'intégration indiquée sur cette page: RVM - Coquille de poisson (Intégration)
Lors de l'exécution de diverses commandes telles que rvm version
, rvm install ...
, rvm use ...
, rvm --default ...
, etc., le message d'erreur suivant s'affiche:
/var/folders/2w/zhgybz7d25s1gdy41qdxwp48001gfh/T/rvm.fish.Pqd0CuZRJW: Shell_session_update: command not found
La recherche rapide dans Google ne renvoie aucun résultat susceptible de m'aider à identifier et/ou résoudre le problème, comme cela a fonctionné pour bon nombre de mes autres problèmes de configuration de développement.
J'ai effectué une recherche de texte rapide dans le fichier de fonctions rvm.fish
, dans le répertoire .config/fish
et également dans l'exécutable principal $HOME/.rvm/bin/rvm
, et je n'ai pas vu de commande telle que Shell_session_update
être appelée directement dans ce fichier.
Est-ce que quelqu'un sait pourquoi cela se produit et comment je peux y remédier? Je suis une personne qui aime régler les problèmes qui se présentent à moi, de sorte que seules les actions sur lesquelles je dois agir apparaissent en face de moi. J'aimerais donc supprimer ce message d'erreur/avertissement. :)
P.S. Une version particulière de Ruby (2.0.0) que je tentais d'installer et d'utiliser semble fonctionner correctement, même dans la même session de terminal (iTerm (2)), sans avoir à la redémarrer. J'ai depuis fermé celui-ci et créé une nouvelle session de terminal. Je vois toujours le message apparaître lors de l'exécution des différentes commandes susmentionnées.
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 en cours d’initialisation une fois par environnement de terminal.
Finalement, j'ai pu réparer mon environnement. Je publierai des informations relatives à mon problème spécifique afin d’aider certaines personnes, même si d’autres peuvent avoir le même symptôme mais une autre cause fondamentale.
Une partie du problème racine provenait de RVM et de la manière dont il était initialisé pour mes environnements de ligne de commande. J'avais trouvé différentes façons de le faire, en particulier depuis qu'une méthode supplémentaire avait été spécialement conçue pour l'environnement Shell fish
.
Il semble que la cause principale soit:
fish
, et étaient exécutées dans mon autre environnement terminal, bash
ou vice versa. Ceci est indiqué dans les détails ci-dessous, où le chemin bash
_Port rompu comporte des chemins délimités par :
s, mais d'autres sont également inclus par des espaces, ce qui représente une syntaxe incorrecte pour bash
, mais correcte pour fish
.Ensuite, l’autre partie du problème fondamental est qu’il semble qu’un bug lié à RVM/direnv s’est récemment glissé au sujet de la fonction piège. J'ai probablement rencontré à nouveau cela en ayant l'une des autres versions problématiques de RVM qui pourrait être causée par:
curl -sSL https://get.rvm.io | bash
rvm get head
rvm_autoupdate_flag=2
à ~/.rvmrc
Ce problème devrait être corrigé à compter du 30 mars 2016 ou de la version 1.26.11:
Après s'être battu avec les utilitaires GNU pour effectuer une recherche complète du système de fichiers, jetant un coup d'œil à l'intérieur du contenu du fichier, j'ai utilisé Atom pour obtenir plus de succès et constaté que la seule occurrence de Shell_session_update
avait été trouvée dans le /etc/bashrc_Apple_Terminal
. fichier mentionné par Zanchey (en plus des fichiers d’historique et autres). 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 est iTerm.app
et non Apple_Terminal
.
Cela n’a pas non plus aidé que, pour une raison quelconque, j’ai eu à gérer l’installation de RVM plus d’une fois, en passant par le processus d’installation, ce qui apparemment ajoute déjà la configuration à plusieurs "fichiers de points", où j’avais aussi ajouté manuellement une ou plusieurs lignes. .
Parallèlement à cela, j'avais créé un fichier .bashrc
auquel je m'étais lié à partir de .bash_profile
sur mon Mac, puisqu'il n'existait apparemment pas par défaut. Auparavant, j'avais lu sur un système Linux que, par convention, .bash_profile
convenait à certaines personnalisations et .bashrc
à d'autres, comme la définition d'alias et de fonctions d'utilisateurs, ou inversement. Je n’étais donc pas habitué à regarder à l’intérieur du fichier .bash_profile
, et surtout pas du fichier .profile
, tous dans le répertoire utilisateur, que le même système copie également. N'oublions pas non plus qu'un path_helper
est dans le mélange (!), Mais ne semble pas avoir contribué à créer de problèmes.
Les manières possibles de configurer l'environnement, qu'elles soient correctes ou non, sont les suivantes:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
export PATH="$PATH:$HOME/.rvm/bin"
(en tant que dernière ligne qui modifie la variable PATH
juste avant que le contrôle soit passé à l'utilisateur.rvm default
(La dernière ligne PATH
- doit également être modifiée. De: StackOverflow - Obtenir "Attention! PATH n'est pas correctement configuré" lors de l'exécution de RVM, utilisez 2.0.0 --default )Pour plus de détails, 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é)
/Users/username/.rvm/gems/Ruby-2.0.0-p648/bin /Users/username/.rvm/gems/Ruby-2.0.0-p648@global/bin /Users/username/.rvm/rubies/ Ruby-2.0.0-p648/bin /Users/username/.rvm/bin/usr/local/bin/usr/bin/usr/sbin/sbin/usr/local/munki /Users/username/.rvm/ poubelle
'Naturellement' meilleur poisson PATH
/ usr/local/opt/coreutils/libexec/gnubin/usr/local/opt/findutils/bin/usr/local/bin/usr/bin/bin/usr/sbin/sbin/usr/local/munki
bash d'origine (brisé) PATH
/libexec/gnubin:/bin:/Users/username/.rvm/gems/Ruby-2.0.0-p648/bin /Users/username/.rvm/gems/Ruby-2.0.0-p648@global/bin/Users /username/.rvm/rubies/Ruby-2.0.0-p648/bin /Users/username/.rvm/bin/usr/local/bin/usr/bin/usr/sbin/sbin/usr/local/munki : /Users/username/.rvm/bin
'Manuellement' a corrigé bash PATH
/libexec/gnubin:/bin:/Users/username/.rvm/gems/Ruby-2.0.0-p648/bin:/Users/username/.rvm/gems/Ruby-2.0.0-p648@global/bin: /Users/username/.rvm/rubies/Ruby-2.0.0-p648/bin:/Users/username/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin: /sbin:/usr/local/munki:/Users/username/.rvm/bin:/Users/username/.rvm/bin
'Naturellement', mieux bash PATH
/ usr/local/opt/coreutils/libexec/gnubin:/usr/local/opt/findutils/bin:/usr/local/opt/coreutils/libexec/gnubin:/usr/local/opt/findutils/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/munki
Remarques:
.bashrc
, etc., puis je les ai exécutés une fois le problème résolu.Moi aussi j'ai eu le même problème. Plus tard, j’ai trouvé qu’un problème était déjà présent dans rvm repo pour cela. Et ils l'ont corrigé dans l'une des demandes d'extraction.
Pour résoudre ce problème, vous devez soit mettre à niveau la version la plus récente, soit la pointer vers la révision de développement actuelle.
rvm get head
Pour plus de détails, reportez-vous à cet article .