rbenv 提供的垫片也与鱼壳兼容,这将非常有帮助。 这不会是一个巨大的变化,但这意味着 rbenv 可以在非 bash/zsh shell 中使用。 fish 的语法实际上比 bash 更理智。
我想对此表示支持。
似乎垫片很好,这是需要调整的安装指南。 将此添加到 config.fish 以获得 rbenv 支持:
set PATH $HOME/.rbenv/bin $PATH
set PATH $HOME/.rbenv/shims $PATH
rbenv rehash >/dev/null ^&1
谢谢,埃德! :)
奇迹般有效。
你是一位绅士,一位学者。
正如@emcmanus指出的那样,rbenv 的垫片适用于 Fish 或任何其他 shell。 你只需要 Bash _installed_ 来使用它们——它不需要是你的 shell。 垫片是 Bash 脚本,您可以从 Fish 运行它们,就像从 Fish 运行 Ruby 或 Python 脚本一样。
将 rbenv 添加到您的PATH
是它工作所必需的。 我会接受为rbenv init
添加 Fish 兼容性的补丁,因此您无需手动构建路径。
看起来这还不够,因为rbenv shell
不起作用。
rbenv shell
只是设置RBENV_VERSION
环境变量的快捷方式。 没有它,您不会失去任何功能。
我用它来让 rbenv shell 在鱼中工作: https ://coderwall.com/p/6hja1w
从fish shell 调用rbenv 时,不会传递在shell 中设置的环境变量。 更重要的是, ~/.bashrc
和~/.bash_profile
都不会被读取。 如果要自定义 rbenv,请参阅 #375。
@espen提到了我的 Coderwall protip,但有更新版本允许部分 Ruby 名称(默认将选择最新的名称,仍未完成)。 可以在那里找到 Gist https://gist.github.com/5631243 (如果可以的话,给它一些爱)。
我知道这个问题现在已经关闭,但我仍然想知道我们是否可以以正确的方式实现这个功能。 我是否认为我们只需要确保在调用rbenv init -
它应该回显鱼壳友好的语法,以便鱼能够对其进行评估? 在这种情况下,我宁愿将它作为原始 rbenv 存储库的一部分来实现,而不是使用可能与 rbenv 的原始内部不同步的外部 _workarounds_...
我也明白@sstephenson可能不想积极支持
大概我们需要更改的文件是https://github.com/sstephenson/rbenv/blob/master/libexec/rbenv-init
我对吗? 我不是一个 shell 脚本魔术师,但如果有人愿意以正确的方式做这件事,我宁愿尝试与某人合作正确地做这件事。
干杯
欢迎任何fish用户改进rbenv init
的输出,使其支持fish shell并向我们发送拉取请求。
问题是 fish 不是 POSIX shell,并且很难以正确的方式实现rbenv init
以提供对 fish 的支持(我认为会有一些人会想要支持csh
或tcsh
)。 我认为应该注意的是,如果有人使用非 POSIX shell,那么他可以使用社区功能之一(并提供链接),或者他必须自己编写。
@hauleth我认为你_可能_弄错了。 根据@emcmanus和@sstephenson的评论,我们需要做的就是让rbenv init
产生与鱼兼容的语法,这样它就可以被鱼eval
d。 只需要安装一个 POSIX 兼容的 shell(比如那种方式的 bash),而不一定是你选择的 shell。 请参阅上面@sstephenson的评论。
我会向 Fish 社区邮件列表发送一封电子邮件并发起对话,我会尝试从那里的人那里获得一些帮助。
最初的rbenv shell
命令调用rbenv sh-shell
,它返回一个也是eval
d 的字符串。 我们可以解决它并解析该调用的返回代码,而不是评估返回的字符串。 这样可以吗? 如果是的话,我可以创造一些可以做到这一点的东西。
@bitboxer Fish shell 应该得到 rbenv master 的完全支持。 如果您发现情况并非如此,请打开一个新问题。 谢谢!
谢谢“emcmanus”
我使用鱼并正在寻找答案。
正如“emcmanus”所提到的,如果您使用的是鱼壳,那么以下对我有用。
测试
vi ~/.config/fish/config.fish 设置路径 $HOME/.rbenv/bin $PATH 设置路径 $HOME/.rbenv/shims $PATH rbenv 重新哈希 >/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
最有用的评论
似乎垫片很好,这是需要调整的安装指南。 将此添加到 config.fish 以获得 rbenv 支持: