Warum habe ich / wie kann ich diesen Fehler beheben: "shell_session_update: Befehl nicht gefunden"

16128
Pysis

Hintergrund

Ich stehe auf Ruby 2.x und Rails 4.x auf einem MacBook mit OS X El Capitan (10.11.3), der Fischmuschel und verwende die auf dieser Seite aufgelistete Integration: RVM - Fish Shell (Integration)

Problem

Wenn verschiedene Befehle wie die Ausführung rvm version, rvm install ..., rvm use ..., rvm --default ...usw., erhalten I die folgende Fehlermeldung:

/var/folders/2w/zhgybz7d25s1gdy41qdxwp48001gfh/T/rvm.fish.Pqd0CuZRJW: shell_session_update: command not found 

Die schnelle Google-Suche liefert keine verwandten Ergebnisse, die mir helfen könnten, das Problem zu identifizieren und / oder zu beheben, da dies bei vielen anderen Problemen beim Aufbau der Entwicklung funktioniert hat.

Ich habe eine schnelle Textsuche in der rvm.fishFunktionsdatei, unter dem .config/fishVerzeichnis und auch in der $HOME/.rvm/bin/rvmausführbaren Hauptdatei durchgeführt, und es wurde kein Befehl shell_session_updateangezeigt, der direkt in dieser Datei aufgerufen wurde.

Frage

Weiß jemand, warum dies passiert und wie ich es reparieren kann? Ich bin eine Person, die gerne die Dinge vor mir repariert, so dass nur die Dinge, die ich ergreifen muss, vor mir erscheinen, also möchte ich diese Fehler- / Warnmeldung entfernen. :)

PS Eine bestimmte Ruby-Version (2.0.0), die ich installieren und verwenden wollte, scheint ordnungsgemäß zu funktionieren, selbst in derselben Terminalsitzung (iTerm (2)), ohne dass sie neu gestartet werden muss. Ich habe diese seitdem geschlossen und eine neue Terminalsitzung erstellt und sehe immer noch die Meldung, wenn die verschiedenen zuvor genannten Befehle ausgeführt werden.

23
`shell_session_update` ist eine Bash-Funktion, die von OS X in` / etc / bashrc_Apple_Terminal` installiert wird. Es wird davon ausgegangen, dass etwas in den Bash-Befehlen, die RVM ausführt, dies als Ausgabe erzeugt. Zanchey vor 8 Jahren 0
[FIXED - Shell_session_update-Befehl nicht gefunden] (http://www.singhajit.com/shell_session_update-command-not-found/) Ajit Singh vor 8 Jahren 0

2 Antworten auf die Frage

39
Pysis

TL; DR: Stellen Sie sicher, dass RVM mindestens 1.26.11 auf dem neuesten Stand ist, indem Sie den Befehl erneut installieren oder ausgeben rvm get headund nur einmal pro Terminalumgebung initialisiert werden.

Ergebnis

Schließlich konnte ich meine Umgebung reparieren. Ich werde einige Informationen zu meinem spezifischen Problem veröffentlichen, um einigen zu helfen, auch wenn andere das gleiche Symptom, aber eine andere Ursache haben können.

Ursache

Ein Teil des Hauptproblems war von RVM und wie es für meine Befehlszeilenumgebungen initialisiert wurde. Ich hatte ein paar verschiedene Wege gefunden, dies zu tun, zumal eine zusätzliche Methode speziell für die fishShell-Umgebung entwickelt wurde.

Es scheint, dass die Hauptursache entweder war:

  • RVM mehr als einmal initialisieren, da ich mehrere Anweisungen hatte, eine pro Terminalkonfigurationsdatei, und aufgrund ihrer Verkettung waren mir die anderen nicht bewusst, die automatisch hinzugefügt wurden.
  • Oder es wurden irgendwie Anweisungen hinzugefügt, die die Initialisierung für eine Terminalumgebung mischten fishund in meiner anderen Terminalumgebung ausgeführt wurden bash, oder umgekehrt. Dies ist in meinen Details unten zu sehen, wo der gebrochene bashPATH einige der durch :s begrenzten Pfade hat, andere jedoch auch durch Leerzeichen eingeschlossen wurden, was eine falsche Syntax ist bash, aber korrekt ist fish.
  • Oder beides geschah!

Der andere Teil des Wurzelproblems war, dass sich anscheinend ein RVM / direnv-bezogener Fehler in Bezug auf die Trap-Funktion eingeschlichen hat. Ich bin wahrscheinlich wieder auf dieses Problem gestoßen, als ich eine der anderen problematischen Versionen von RVM hatte, die verursacht werden konnte durch:

  • Eine Neuinstallation: curl -sSL https://get.rvm.io | bash
  • Ein manuelles Update: rvm get head
  • Ein automatisches Update (das ich gerade gemacht hatte) durch Hinzufügen rvm_autoupdate_flag=2von~/.rvmrc

Dieses Problem sollte am 30. März 2016 oder Release 1.26.11 behoben sein:

Die Geschichte

Nachdem ich mit den GNU-Dienstprogrammen gekämpft hatte, um eine vollständige Suche des Dateisystems durchzuführen, habe ich Atom dazu verwendet, um mehr Erfolg zu erzielen, und fand heraus, dass das einzige Vorkommen shell_session_updatein der /etc/bashrc_Apple_Terminalvon Zanchey erwähnten Datei (außer den Protokolldateien) gefunden wurde und derartige). Ich bin auch nicht sicher, warum das ausgeführt wurde, weil ich iTerm (2) verwendet habe und der Wert $TERM_PROGRAMin diesem Fall ist iTerm.appund nicht Apple_Terminal.

Es half auch nicht, dass ich aus irgendeinem Grund die RVM-Installation mehr als einmal verwalten musste und den Installationsprozess durchging, der anscheinend bereits einigen 'dotfiles' eine Konfiguration hinzufügt, bei der ich auch einige Zeilen manuell hinzugefügt hatte .

Außerdem hatte ich auf meinem Mac eine .bashrcDatei erstellt und darauf verlinkt .bash_profile, da sie anscheinend nicht standardmäßig vorhanden war. Ich hatte zuvor auf einem Linux-System gelesen, das durch Konvention .bash_profilefür einige Anpassungen geeignet ist und .bashrcfür andere geeignet ist, z. B. für die Definition von Aliasnamen und Funktionen von Benutzern oder umgekehrt. Ich war also nicht daran gewöhnt, in die .bash_profileDatei zu schauen und vor allem nicht in die .profileDatei, alles im Benutzerverzeichnis, das ein ähnliches System kopiert. Vergessen wir auch nicht ein path_helperist in der Mischung (!), Schien aber zu keinem Problem beizutragen.

Die möglichen Möglichkeiten zum Einrichten der Umgebung, die korrekt oder nicht korrekt sind, lauten wie folgt:

Mehr Details

Für mehr unglaubliche Ausführlichkeit finden Sie hier einige Beispielpfade, die ich beim Debuggen des Problems zwischen verschiedenen Umgebungen erfasst habe:

Original (gebrochener) Fisch PFAD

/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/ Behälter

"Natürlich" besser Fisch PFAD

/ usr / local / opt / coreutils / libexec / gnubin / usr / local / opt / findutils / bin / usr / local / bin / usr / bin / bin / usr / sbin / sbin / usr / local / munki

Ursprünglicher (gebrochener) bash PFAD

/libexec/gnubin:/bin:/Users/username/.rvm/gems/ruby-2.0.0-p648/bin /Users/username/.rvm/gems/ruby-2.0.0-p648@global/bin / Benutzer /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

"Manuell" Fixed 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:/User/benutzername/.rvm/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin: /sbin:/usr/local/munki:/Users/username/.rvm/bin:/Users/username/.rvm/bin

'Natürlich' besser bash PFAD

/ 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

Anmerkungen:

  • Die 'Originale' waren vom Starten der brandneuen Umgebung in einem Befehlszeileninterpreter, während das Problem auftrat.
  • Das "Handbuch" ist natürlich, wenn ich die falsche Pfadzeichenfolge genommen habe, die Syntaxfehler korrigiert habe und den Interpreter besser bedient habe, also wusste ich, was zu erwarten ist, wenn ich die Ursache weiter beheben kann.
  • Die 'natürlichen' waren, als ich zum ersten Mal das Laden meiner Konfigurationsdateien für die Terminalumgebung wie .bashrcusw. übersprang und sie schließlich ausgeführt hatte, nachdem das Problem behoben wurde.
`rvm get head` und dann` rvm install `für jede Version endete für mich TomFuertes vor 7 Jahren 0
Bei Verwendung der curl-Installationsmethode: `curl -sSL https://get.rvm.io | bash -s Kopf --ruby` rynop vor 7 Jahren 0
Diese Antwort ist Gold. Nützlich und gründlich. TehShrike vor 7 Jahren 0
Ich hatte dieses "Problem" nach der Installation von bash-git-prompt. Die Neuinstallation von rvm schien _naaah zu viel zu sein. Also bin ich gerade umgezogen`bis zum Ende in meinem` .bash_profile`. Fest. A.D. vor 7 Jahren 0
Ich habe normalerweise festgestellt, dass diese andere Fehlermeldung behoben wurde: http://stackoverflow.com/questions/18276701/getting-warning-path-is-not-properly-set-up-when-doing-rvm-use- 2-0-0-Defaul „Warnung! PATH ist nicht richtig eingerichtet. “Vielleicht hatten Sie Sourcing-Lines an anderer Stelle, die es diesem Problem ähnlicher machen würden? Das wäre nicht gerade sinnvoll, aber alles ist möglich. Pysis vor 7 Jahren 0
Das Hinzufügen von "rvm get head" funktioniert in Travis nicht, siehe https://github.com/travis-ci/travis-ci/issues/9511 timotheecour vor 6 Jahren 0
6
Ajit Singh

Ich hatte auch das gleiche Problem. Später stellte ich fest, dass bereits ein Problem in rvm repo vorhanden ist. Und sie haben es in einer der Pull-Anfragen behoben.

Um dies zu beheben, aktualisieren Sie den rvm entweder auf die neueste Version oder verweisen Sie auf die aktuelle Entwicklungsversion.

rvm get head 

Weitere Details finden Sie in diesem Beitrag .

Könnten Sie die relevanten Teile aus dem Link zitieren? Ansonsten sieht es so aus, als würden Sie versuchen, Ihren eigenen Blog zu promoten. Burgi vor 8 Jahren 1
Dies funktioniert nicht in Travis, siehe https://github.com/travis-ci/travis-ci/issues/9511 timotheecour vor 6 Jahren 0