rbenvが提供する、フィッシュシェルと互換性のあるシムがあれば非常に役立ちます。 大きな変更にはなりませんが、rbenvをbash / zsh以外のシェルで使用できることを意味します。 fishの構文は、実際にはbashよりもはるかに正気です。
これを応援したいと思います。
シムは問題ないようです。微調整が必要なのはインストールガイドです。 rbenvをサポートするためにこれをconfig.fishに追加します。
set PATH $HOME/.rbenv/bin $PATH
set PATH $HOME/.rbenv/shims $PATH
rbenv rehash >/dev/null ^&1
ありがとう、エド! :)
チャームのように機能します。
あなたは紳士であり学者です。
@emcmanusが指摘しているように、rbenvのシムはFishやその他のシェルで正常に機能します。 それらを使用するために必要なのはBash_installed_だけであり、シェルである必要はありません。 シムはBashスクリプトであり、FishからRubyまたはPythonスクリプトを実行するのと同じ方法で、Fishから実行できます。
PATH
rbenvを追加するだけで、それが機能します。 rbenv init
Fishの互換性を追加するパッチを受け入れるので、手動でパスを作成する必要はありません。
rbenv shell
が機能しないため、これでは不十分なようです。
rbenv shell
は、 RBENV_VERSION
環境変数を設定するための単なるショートカットです。 それがなくても機能が失われることはありません。
私はこれを使用してrbenvシェルを魚で動作させました: https ://coderwall.com/p/6hja1w
魚のシェルからrbenvを呼び出す場合、シェルに設定された環境変数は渡されません。 さらに、 ~/.bashrc
も~/.bash_profile
も読み取られません。 rbenvをカスタマイズする場合は、#375を参照してください。
@espenは私のCoderwallprotipについて言及しましたが、部分的なRuby名を許可するあります(デフォルトは最新のものが選択されますが、まだ完了していません)。 要旨はhttps://gist.github.com/5631243にありください)。
この問題は解決されたことを理解していますが、この機能を正しい方法で実装できるかどうかはまだ疑問です。 rbenv init -
が呼び出されたときに、魚がそれを評価できるように、魚の殻に優しい構文をエコーする必要があることを確認するだけでよいと私は正しく考えていますか? その場合、rbenvの元の内部と同期しなくなる可能性のある外部の_workarounds_を持つよりも、元のrbenvリポジトリの一部として実装したいと思います...
@sstephensonが積極的に魚の殻をサポートしたくないかもしれないことも理解していますが、おそらく最初に実験的な互換性を実装しようとすることができ、魚の殻のコミュニティ自体からサポートを得ることができると確信しています(彼らはとてもフレンドリーで非常に反応が良い)。
おそらく、変更する必要のあるファイルはhttps://github.com/sstephenson/rbenv/blob/master/libexec/rbenv-initです
私は正しいですか? 私はシェルスクリプトの魔術師ではありませんが、誰かがこれを正しい方法で行うことができるのであれば、誰かと協力してそれを正しく行うことを試みたいと思います。
乾杯
rbenv init
の出力を改善して、魚の殻をサポートし、プルリクエストを送信できるように、魚のユーザーなら誰でも歓迎します。
問題は、魚がPOSIXシェルではなく、魚をサポートするための正しい方法でrbenv init
を実装するのが難しいことです(その場合、 csh
またはtcsh
)。 誰かが非POSIXシェルを使用する場合、コミュニティ関数の1つを使用できる(そしてリンクを提供する)か、自分で作成する必要があることに注意する必要があると思います。
@hauleth私はあなたが間違っているかもしれないと思います。 @emcmanusと@sstephensonからのコメントに基づいて、私たちがする必要があるのは、 rbenv init
を取得して、魚がeval
dになるように、魚と互換性のある構文を生成することです。 POSIX互換シェル(その方法のbashなど)をインストールするだけでよく、必ずしも選択したシェルである必要はありません。 上記の@sstephensonによるコメントを参照してください。
私は魚のコミュニティのメーリングリストにメールを送り、会話を開始し、そこにいる人たちから助けを得ようとします。
元のrbenv shell
コマンドはrbenv sh-shell
呼び出します。これは、 eval
でもある文字列を返します。 返された文字列を評価する代わりに、それを回避して、その呼び出しの戻りコードを解析することができます。 それは大丈夫でしょうか? はいの場合、私はこれを行う何かを作成することができます。
@bitboxerFishシェルはrbenvマスターによって完全にサポートされている必要があります。 そうでない場合は、新しい号を開いてください。 ありがとう!
ありがとう「emcmanus」
私は魚を使って答えを探していました。
「emcmanus」で述べたように、魚の殻を使用している場合は、次のことがうまくいきました。
テスト済み
vi〜 / .config / fish / config.fish PATH $ HOME / .rbenv / bin $ PATHを設定します PATH $ HOME / .rbenv / shims $ PATHを設定します rbenv rehash> / dev / null ^&1
次に、魚を終了して魚をリロードするか、ログオフしてから再度ログオンします。 ファイルが見つからない場合は、fishをインストールしたばかりで、一度も実行しなかったことを意味します。 fishを実行するだけで、そのフォルダーが作成されます(ファイルが作成されない場合があります)。
これは魚ではなく魚です。
http://fishshell.com/
@emcmanusと@sstephensonに感謝します。
どうやら^構文は将来非推奨になり、一部のバージョンでは壊れているようです(この問題はこちらをご覧ください)。
したがって、代わりに次の構文を使用する方がよい場合があります: rbenv rehash >/dev/null >2&1
。
したがって、代わりに次の構文を使用する方がよい場合があります:rbenv rehash> / dev / null> 2&1。
そこにタイプミスがあり、 2
と>
を交換する必要があります。
rbenv rehash >/dev/null 2>&1
最も参考になるコメント
シムは問題ないようです。微調整が必要なのはインストールガイドです。 rbenvをサポートするためにこれをconfig.fishに追加します。