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.
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
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
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 :