Hintergrund
Ich erreiche Ruby 2.x und Rails 4.x auf einem MacBook unter OS X El Capitan (10.11.3) mithilfe der auf dieser Seite aufgelisteten Integration: RVM - Fish Shell (Integration)
Problem
Wenn verschiedene Befehle ausführen , wie beispielsweise 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 gibt keine verwandten Ergebnisse zurück, anhand derer ich das Problem identifizieren und / oder beheben kann, wie dies bei vielen meiner anderen Probleme bei der Einrichtung der Entwicklung der Fall war.
Ich habe eine schnelle Textsuche in der rvm.fish
Funktionsdatei, im .config/fish
Verzeichnis und auch in der $HOME/.rvm/bin/rvm
ausführbaren Hauptdatei durchgeführt und keinen Befehl gefunden shell_session_update
, der direkt in dieser Datei aufgerufen wurde.
Frage
Weiß jemand, warum dies geschieht und wie ich es beheben kann? Ich bin eine Person, die gerne die Dinge vor mir repariert, sodass nur die Dinge vor mir angezeigt werden, auf die ich reagieren muss. Daher möchte ich diese Fehler- / Warnmeldung entfernen. :)
PS Eine bestimmte Ruby-Version (2.0.0), die ich zu installieren und zu verwenden versuchte, scheint auch in derselben Terminal-Sitzung (iTerm (2)) ordnungsgemäß zu funktionieren, ohne sie neu starten zu müssen. Ich habe diese Sitzung geschlossen und eine neue Terminalsitzung erstellt. Die Meldung wird weiterhin angezeigt, wenn die verschiedenen oben genannten Befehle ausgeführt werden.
shell_session_update
ist eine Bash-Funktion, die von OS X installiert wurde./etc/bashrc_Apple_Terminal
Vermutlich wird sie in den Bash-Befehlen, die RVM ausführt, als Ausgabe erzeugt.Antworten:
TL; DR: Stellen Sie sicher, dass RVM auf mindestens 1.26.11 aktuell ist, indem Sie den Befehl erneut installieren oder ausgeben. Die
rvm get head
Initialisierung erfolgt nur einmal pro Terminalumgebung.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 haben, aber eine andere Ursache.
Ursache
Ein Teil des Root-Problems stammte von RVM und davon, wie es für meine Befehlszeilenumgebungen initialisiert wurde. Ich hatte ein paar verschiedene Möglichkeiten gefunden, um dies zu tun, zumal eine zusätzliche Methode speziell für die
fish
Shell-Umgebung entwickelt wurde.Es scheint, die Grundursache war entweder:
fish
und in meiner anderen Terminalumgebung ausgeführtbash
wurden oder umgekehrt. Dies ist in meinen Details unten zu sehen, in denen der unterbrochenebash
PFAD einige der durch:
s begrenzten Pfade enthält , andere jedoch auch durch Leerzeichen. Dies ist eine falsche Syntaxbash
, die jedoch korrekt istfish
.Dann war der andere Teil des Grundproblems, dass es den Anschein hat, als ob sich kürzlich ein Fehler im Zusammenhang mit RVM / direnv in Bezug auf die Trap-Funktion eingeschlichen hat. Wahrscheinlich bin ich wieder auf dieses Problem gestoßen, als ich eine der anderen problematischen Versionen von RVM hatte, die folgende Ursachen haben könnten:
curl -sSL https://get.rvm.io | bash
rvm get head
rvm_autoupdate_flag=2
zu~/.rvmrc
Dieses Problem sollte ab dem 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 im Dateisystem durchzuführen, und einen Blick
shell_session_update
in den/etc/bashrc_Apple_Terminal
Dateiinhalt geworfen hatte , benutzte ich Atom, um dies erfolgreicher zu machen, und stellte fest, dass das einzige Vorkommen von in der von Zanchey erwähnten Datei gefunden wurde (neben Verlaufsdateien) und derartige). Ich bin mir auch nicht sicher, warum das ausgeführt wurde, weil ich iTerm (2) verwendet habe und der Wert von$TERM_PROGRAM
in diesem Fall istiTerm.app
und nichtApple_Terminal
.Es hat auch nicht geholfen, dass ich aus irgendeinem Grund die RVM-Installation mehr als einmal verwalten musste, indem ich den Installationsprozess durchlief, der anscheinend bereits mehreren 'Punktedateien' Konfiguration hinzufügte, wobei ich auch einige oder die Zeilen manuell hinzugefügt hatte .
Außerdem hatte ich eine
.bashrc
Datei erstellt und von.bash_profile
meinem Mac aus darauf verlinkt , da sie anscheinend nicht standardmäßig vorhanden war. Ich hatte zuvor auf einem Linux-System gelesen, dass sich per Konvention.bash_profile
für einige Anpassungen und.bashrc
für andere wie das Definieren von Benutzer-Aliasen und -Funktionen oder umgekehrt eignet. Daher war ich es nicht gewohnt, in die.bash_profile
Datei und insbesondere nicht in die.profile
Datei zu schauen , die sich alle im Benutzerverzeichnis befanden, das vom ähnlichen System ebenfalls kopiert wurde. Vergessen wir auch nicht, dass apath_helper
im Mix ist (!), Aber anscheinend zu keinen Problemen beigetragen hat.Es gibt folgende Möglichkeiten, die Umgebung einzurichten, die korrekt sein kann oder nicht:
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
export PATH="$PATH:$HOME/.rvm/bin"
(Als letzte Zeile, die diePATH
Variable unmittelbar vor der Steuerung ändert, wird sie dem Benutzer übergeben.rvm default
(PATH
Muss auch die letzte -modifizierende Zeile sein. From: StackOverflow - Beim Ausführen von rvm wird "Warning! PATH is not proper setup" angezeigt. Use 2.0.0 --default )Mehr Details
Im Folgenden sind einige Beispiele aufgeführt, die ich beim Debuggen des Problems zwischen verschiedenen Umgebungen aufgenommen habe:
Ursprünglicher (gebrochener) Fisch PFAD
"Natürlich" besser fischen PATH
Ursprünglicher (gebrochener) Bash-Pfad
'Manuell' Bash-Pfad korrigiert
"Natürlich" besser PATH
Anmerkungen:
.bashrc
usw.) übersprungen habe und sie schließlich ausgeführt haben, nachdem das Problem behoben wurde.quelle
rvm get head
und dannrvm reinstall {version}
für jede Version für michcurl -sSL https://get.rvm.io | bash -s head --ruby
<rvm sourcing line>
ans Ende meiner Karriere gegangen.bash_profile
. Fest.Ich hatte auch das gleiche Problem. Später stellte ich fest, dass hierfür bereits ein Problem in rvm repo vorhanden ist. Und sie haben es in einer der Pull-Anfragen behoben.
Um dies zu beheben, aktualisieren Sie entweder den rvm auf die neueste Version oder verweisen Sie auf die aktuelle Entwicklungsversion.
Weitere Details finden Sie in diesem Beitrag .
quelle