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:
- RVM wurde mehr als einmal initialisiert, da ich mehrere Anweisungen hatte, eine pro Terminalkonfigurationsdatei, und weil sie verkettet waren, waren mir die anderen nicht bekannt, die automatisch hinzugefügt wurden.
- Oder es wurden Anweisungen hinzugefügt, die beispielsweise die Initialisierung für eine Terminalumgebung vermischten
fish
und in meiner anderen Terminalumgebung ausgeführt bash
wurden oder umgekehrt. Dies ist in meinen Details unten zu sehen, in denen der unterbrochene bash
PFAD einige der durch :
s begrenzten Pfade enthält , andere jedoch auch durch Leerzeichen. Dies ist eine falsche Syntax bash
, die jedoch korrekt ist fish
.
- Oder beides geschah!
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:
- 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=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 ist iTerm.app
und nicht Apple_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 a path_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:
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
/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/ Behälter
"Natürlich" besser fischen PATH
/ 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 / 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
'Manuell' Bash-Pfad korrigiert
/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
"Natürlich" besser 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
Anmerkungen:
- Bei den Originalen ging es darum, die brandneue Umgebung in einem der beiden Befehlszeileninterpreter zu starten, während das Problem auftrat.
- Das 'Handbuch' ist natürlich, wenn ich die falsche Pfadzeichenfolge genommen, die Syntaxfehler behoben und eine bessere Funktionsweise des Interpreters festgestellt habe, sodass ich wusste, was zu erwarten ist, wenn ich die Grundursache weiterhin behebe.
- Die natürlichen Dateien stammen aus der Zeit, als ich das Laden der Konfigurationsdateien für die Terminalumgebung (z. B.
.bashrc
usw.) übersprungen habe und sie schließlich ausgeführt haben, nachdem das Problem behoben wurde.
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.