Rbenv: Cales pour carapace de poisson

Créé le 16 févr. 2012  ·  20Commentaires  ·  Source: rbenv/rbenv

Il serait très utile que rbenv fournisse des cales également compatibles avec les carapaces de poisson. Ce ne serait pas un énorme changement, mais cela signifierait que rbenv pourrait être utilisé dans un shell non-bash/zsh. La syntaxe pour fish est en fait beaucoup plus saine que pour bash.

Commentaire le plus utile

On dirait que les cales sont bonnes, c'est le guide d'installation qui doit être peaufiné. Ajoutez ceci à config.fish pour la prise en charge de rbenv :

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

Tous les 20 commentaires

J'aimerais apporter mon soutien à cela.

On dirait que les cales sont bonnes, c'est le guide d'installation qui doit être peaufiné. Ajoutez ceci à config.fish pour la prise en charge de rbenv :

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

Merci, Ed ! :)

Fonctionne comme un charme.
Vous êtes un gentleman et un érudit.

Comme @emcmanus l'a souligné, les cales de rbenv fonctionnent bien avec Fish ou tout autre shell. Vous n'avez besoin que de Bash _installé_ pour les utiliser - il n'a pas besoin d'être votre shell. Les cales sont des scripts Bash et vous pouvez les exécuter à partir de Fish de la même manière que vous pouvez exécuter un script Ruby ou Python à partir de Fish.

Il suffit d'ajouter rbenv à votre PATH pour que cela fonctionne. J'accepterais un correctif qui ajoute la compatibilité Fish pour rbenv init afin que vous n'ayez pas besoin de construire manuellement les chemins.

Il semble que cela ne soit pas suffisant, car rbenv shell ne fonctionnera pas.

rbenv shell n'est qu'un raccourci pour définir la variable d'environnement RBENV_VERSION . Vous ne perdez aucune fonctionnalité sans cela.

J'ai utilisé ceci pour faire fonctionner le shell rbenv dans les poissons : https://coderwall.com/p/6hja1w

Lors de l'appel de rbenv à partir de fish shell, aucune variable d'environnement définie dans votre shell n'est transmise. De plus, ni ~/.bashrc ni ~/.bash_profile sont lus. Si vous souhaitez personnaliser rbenv, voir #375.

@espen a mentionné le protip du mien Coderwall, mais il existe une version mise à jour qui autorise un nom Ruby partiel (la valeur par défaut sera choisie la plus récente, toujours sans achèvement). L'essentiel peut être trouvé ici https://gist.github.com/5631243 (donnez-lui un peu d'amour si vous le pouvez).

Je comprends que ce problème est maintenant clos, mais je me demande toujours si nous pourrions implémenter cette fonctionnalité de la bonne manière. Ai-je raison de penser que nous aurions seulement besoin de nous assurer que lorsque rbenv init - est appelé, il devrait faire écho à la syntaxe compatible avec les coquilles de poisson afin que le poisson puisse l'évaluer? Dans ce cas, je préférerais l'implémenter dans le cadre du référentiel rbenv d'origine plutôt que d'avoir des _solutions de contournement_ externes qui pourraient se désynchroniser avec les éléments internes d'origine de rbenv ...

Je comprends également que @sstephenson ne

Vraisemblablement, le fichier que nous aurions besoin de modifier est https://github.com/sstephenson/rbenv/blob/master/libexec/rbenv-init
Ai-je raison? Je ne suis pas un magicien des scripts shell, mais je préfère essayer de le faire correctement en collaboration avec quelqu'un si l'on est prêt à le faire de la bonne manière.

À votre santé

Tout utilisateur de fish est invité à améliorer la sortie de rbenv init afin qu'il prenne en charge fish shell et à nous envoyer une pull request.

Le problème est que fish n'est pas un shell POSIX et qu'il sera difficile d'implémenter rbenv init de la bonne manière pour fournir un support à fish (je suppose qu'il y en aura alors certains voudront un support pour csh ou tcsh ). Je pense qu'il convient de noter que si quelqu'un utilise un shell non POSIX, il peut utiliser l'une des fonctions de la communauté (et donner un lien) ou il doit l'écrire lui-même.

@hauleth Je pense que vous vous trompez peut-être. Sur la base des commentaires de @emcmanus et @sstephenson, tout ce que nous avons à faire est d'obtenir rbenv init pour produire une syntaxe compatible avec fish afin qu'elle puisse être eval d par fish. Un shell compatible POSIX (comme bash pour cette manière) doit juste être installé et ne doit pas nécessairement être le shell de votre choix. Voir les commentaires de @sstephenson ci-dessus.

Je vais envoyer un e-mail à la liste de diffusion de la communauté des poissons et lancer la conversation, j'essaierai d'obtenir de l'aide des gars là-bas.

La commande rbenv shell appelle rbenv sh-shell , qui renvoie une chaîne qui est également eval d. Nous pourrions contourner ce problème et analyser le code de retour de cet appel au lieu d'évaluer la chaîne renvoyée. Est-ce que ça irait? Si oui, je pourrais créer quelque chose qui ferait cela.

@bitboxer Fish shell doit être entièrement pris en charge par rbenv master. Si vous trouvez que ce n'est pas le cas, veuillez ouvrir un nouveau problème. Merci!

Merci "emcmanus"
J'utilise du poisson et je cherchais une réponse.

Comme "emcmanus" l'a mentionné, si vous utilisez une coquille de poisson, ce qui suit a fonctionné pour moi.

TESTÉ EN

  • Debain
  • Ubuntu
  • Kubuntu
  • Feutre
  • CentOS
  • RedHat Entreprise
 vi ~/.config/fish/config.fish
 définir le CHEMIN $HOME/.rbenv/bin $CHEMIN
 set PATH $HOME/.rbenv/shims $PATH
 rbenv ressusciter >/dev/null ^&1

Ensuite, quittez le poisson et rechargez le poisson ou déconnectez-vous et reconnectez-vous. Si vous ne trouvez pas le fichier, cela signifie que vous venez d'installer fish et que vous ne l'avez pas exécuté une seule fois. Exécutez simplement fish et ce dossier sera créé (le fichier ne peut pas).

C'est du poisson, pas du poisson.
http://fishshell.com/

Merci @emcmanus et @sstephenson.

Apparemment, la syntaxe ^ sera obsolète à l'avenir et est cassée dans certaines versions ( voir ce problème ici ).

Par conséquent, il peut être préférable d'utiliser la syntaxe suivante : rbenv rehash >/dev/null >2&1 .

Par conséquent, il peut être préférable d'utiliser la syntaxe suivante à la place : rbenv rehash >/dev/null >2&1.

Il y a une faute de frappe 2 et > devraient être échangés :

rbenv rehash >/dev/null 2>&1
Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

MichalMichalak picture MichalMichalak  ·  3Commentaires

slayer picture slayer  ·  4Commentaires

nguyenhuuphuc83 picture nguyenhuuphuc83  ·  3Commentaires

wakproductions picture wakproductions  ·  4Commentaires

mhinz picture mhinz  ·  3Commentaires