Rbenv: Unterlegscheiben für Fischschale

Erstellt am 16. Feb. 2012  ·  20Kommentare  ·  Quelle: rbenv/rbenv

Es wäre sehr hilfreich, wenn rbenv Unterlegscheiben bereitstellt, die auch mit Fischschalen kompatibel sind. Es wäre keine große Änderung, aber es würde bedeuten, dass rbenv in einer Nicht-Bash/Zsh-Shell verwendet werden könnte. Die Syntax für fish ist eigentlich viel vernünftiger als bash.

Hilfreichster Kommentar

Scheint, dass die Shims in Ordnung sind, es ist die Installationsanleitung, die optimiert werden muss. Fügen Sie dies zu config.fish für rbenv-Unterstützung hinzu:

set PATH $HOME/.rbenv/bin $PATH
set PATH $HOME/.rbenv/shims $PATH
rbenv rehash >/dev/null ^&1

Alle 20 Kommentare

Dafür möchte ich mich gerne unterstützen.

Scheint, dass die Shims in Ordnung sind, es ist die Installationsanleitung, die optimiert werden muss. Fügen Sie dies zu config.fish für rbenv-Unterstützung hinzu:

set PATH $HOME/.rbenv/bin $PATH
set PATH $HOME/.rbenv/shims $PATH
rbenv rehash >/dev/null ^&1

Danke, Ed! :)

Klappt wunderbar.
Sie sind ein Gentleman und ein Gelehrter.

Wie @emcmanus betonte, funktionieren die Shims von rbenv gut mit Fish oder jeder anderen Shell. Sie brauchen nur Bash _installed_, um sie zu verwenden – es muss nicht Ihre Shell sein. Die Shims sind Bash-Skripte, und Sie können sie von Fish aus ausführen, genauso wie Sie ein Ruby- oder Python-Skript von Fish ausführen können.

Das Hinzufügen von rbenv zu Ihrem PATH ist alles, was nötig ist, damit es funktioniert. Ich würde einen Patch akzeptieren, der die Fish-Kompatibilität für rbenv init hinzufügt, damit Sie die Pfade nicht manuell erstellen müssen.

Dies scheint jedoch nicht genug zu sein, da rbenv shell nicht funktioniert.

rbenv shell ist nur eine Abkürzung zum Setzen der Umgebungsvariablen RBENV_VERSION . Ohne sie verlierst du keine Funktionalität.

Ich habe dies verwendet, um die rbenv-Shell in Fischen zum Laufen zu bringen: https://coderwall.com/p/6hja1w

Beim Aufrufen von rbenv aus der Fisch-Shell werden keine in Ihrer Shell festgelegten Umgebungsvariablen übergeben. Außerdem werden weder ~/.bashrc noch ~/.bash_profile gelesen. Wenn Sie rbenv anpassen möchten, lesen Sie #375.

@espen hat meinen Coderwall-Protip erwähnt, aber es gibt eine aktualisierte Version , die einen teilweisen Ruby-Namen erlaubt (der Standard wird der neueste gewählt, immer noch ohne Vervollständigung). Die Gist finden Sie dort https://gist.github.com/5631243 (geben Sie ihr etwas Liebe, wenn Sie können).

Ich verstehe, dass dieses Problem jetzt geschlossen wurde, aber ich frage mich immer noch, ob wir diese Funktion richtig implementieren können. Gehe ich richtig, wenn ich denke, dass wir nur sicherstellen müssen, dass beim Aufruf von rbenv init - fischschalenfreundliche Syntax widergespiegelt werden sollte, damit Fische dies auswerten können? In diesem Fall würde ich es lieber als Teil des ursprünglichen rbenv-Repositorys implementieren lassen, als externe _Workarounds_ zu haben, die möglicherweise nicht mehr mit den ursprünglichen Interna von rbenv synchron sind ...

Ich verstehe auch, dass @sstephenson die

Vermutlich ist die Datei, die wir ändern müssen, https://github.com/sstephenson/rbenv/blob/master/libexec/rbenv-init
Habe ich recht? Ich bin kein Zauberer von Shell-Skripten, aber ich würde lieber versuchen, es in Zusammenarbeit mit jemandem richtig zu machen, wenn man es richtig macht.

Danke schön

Jeder Fischbenutzer ist willkommen, die Ausgabe von rbenv init so zu verbessern, dass es Fischschalen unterstützt und uns einen Pull-Request senden.

Das Problem ist, dass Fisch keine POSIX-Shell ist und es schwierig sein wird, rbenv init richtig zu implementieren, um Fisch zu unterstützen (ich gehe davon aus, dass es dann einige geben wird, die Unterstützung für csh wünschen oder tcsh ). Ich denke, es sollte beachtet werden, dass, wenn jemand eine Nicht-POSIX-Shell verwendet, er eine der Community-Funktionen verwenden kann (und einen Link angeben) oder sie selbst schreiben muss.

@hauleth Ich denke, du _kannst_ sich irren. Basierend auf den Kommentaren von @emcmanus und @sstephenson müssen wir nur rbenv init abrufen, um eine fischkompatible Syntax zu erzeugen, damit sie eval d by fish sein kann. Eine POSIX-kompatible Shell (wie bash für diese Weise) muss nur installiert werden und muss nicht unbedingt die Shell Ihrer Wahl sein. Siehe die Kommentare von @sstephenson oben.

Ich werde eine E-Mail an die Mailingliste der Fisch-Community senden und das Gespräch initiieren, werde versuchen, Hilfe von den Jungs dort zu bekommen.

Der ursprüngliche rbenv shell Befehl ruft rbenv sh-shell , was einen String zurückgibt, der ebenfalls eval d ist. Wir könnten es umgehen und den Rückgabecode dieses Aufrufs analysieren, anstatt den zurückgegebenen String auszuwerten. Wäre das ok? Wenn ja, könnte ich etwas erstellen, das dies tun würde.

@bitboxer Fischshell sollte vom rbenv-Master vollständig unterstützt werden. Sollte dies nicht der Fall sein, öffnen Sie bitte eine neue Ausgabe. Vielen Dank!

Danke "emcmanus"
Ich benutze Fisch und suchte nach einer Antwort.

Wie "emcmanus" erwähnt, wenn Sie Fischschalen verwenden, hat Folgendes für mich funktioniert.

GETESTET IN

  • Debain
  • Ubuntu
  • Kubuntu
  • Fedora
  • CentOS
  • RedHat Enterprise
 vi ~/.config/fish/config.fish
 setze PFAD $HOME/.rbenv/bin $PFAD
 setze PFAD $HOME/.rbenv/shims $PFAD
 rbenv rehash >/dev/null ^&1

Dann Fisch verlassen und Fisch neu laden oder einfach aus- und wieder einloggen. Wenn Sie die Datei nicht finden können, bedeutet dies, dass Sie gerade fish installiert und nicht einmal ausgeführt haben. Führen Sie einfach fish aus und dieser Ordner wird erstellt (Datei möglicherweise nicht).

Das ist Fisch, kein Fisch.
http://fishshell.com/

Danke @emcmanus und @sstephenson.

Anscheinend wird die ^-Syntax in Zukunft veraltet sein und ist in einigen Versionen defekt ( siehe dieses Problem hier ).

Daher ist es möglicherweise besser, stattdessen die folgende Syntax zu verwenden: rbenv rehash >/dev/null >2&1 .

Daher kann es besser sein, stattdessen die folgende Syntax zu verwenden: rbenv rehash >/dev/null >2&1.

Es ist ein Tippfehler drin 2 und > sollte ausgetauscht werden:

rbenv rehash >/dev/null 2>&1
War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

vennsoh picture vennsoh  ·  4Kommentare

dazza-codes picture dazza-codes  ·  4Kommentare

sonnybrakes picture sonnybrakes  ·  4Kommentare

ponamute picture ponamute  ·  4Kommentare

ChrisBrettCA picture ChrisBrettCA  ·  4Kommentare