Fish 使用eval'创建鱼壳函数;d从另一个exe文件输出

Fish 使用eval'创建鱼壳函数;d从另一个exe文件输出,fish,Fish,在使用fish 2.3.1的Ubuntu服务器16.10 x64上,myuru_rtexe在标准输出上生成此函数 function uru set -x URU_INVOKER fish # uru_rt must already be on PATH uru_rt $argv if test -d "$URU_HOME" -a -f "$URU_HOME/uru_lackee.fish" source "$URU_HOME/uru_lackee.fish" el

在使用fish 2.3.1的Ubuntu服务器16.10 x64上,my
uru_rt
exe在标准输出上生成此函数

function uru
  set -x URU_INVOKER fish

  # uru_rt must already be on PATH
  uru_rt $argv

  if test -d "$URU_HOME" -a -f "$URU_HOME/uru_lackee.fish"
    source "$URU_HOME/uru_lackee.fish"
  else if test -f "$HOME/.uru/uru_lackee.fish"
    source "$HOME/.uru/uru_lackee.fish"
  end
end
通过
uru\u rt admin安装运行时
uru
函数提供了基于golang的跨平台ruby版本管理器工具

在bash系统上,我通过在启动文件中放置
eval“$(uru\u rt admin install)”
来注入
uru
函数,以便
uru
出现在shell中

在fish上,运行
eval(uru\u rt admin install)
会因为失败而奖励我

$ eval (uru_rt admin install)
Missing end to balance this begin
- (line 1): begin; function uru   set -x URU_INVOKER fish    # uru_rt must already be on PATH   uru_rt $argv    if test -d "$URU_HOME" -a -f "$URU_HOME/uru_lackee.fish"     source "$URU_HOME/uru_lackee.fish"   else if test -f "$HOME/.uru/uru_lackee.fish"     source "$HOME/.uru/uru_lackee.fish"   end end
            ^
from sourcing file -
    called on line 60 of file /usr/share/fish/functions/eval.fish

in function “eval”
    called on standard input

source: Error while reading file “-”
我还尝试了
设置u1(uru\u rt admin安装);使用相同的结果评估“$u1”

正如所料,当我执行
uru\u rt admin安装>~/.config/fish/functions/uru.fish
时,
uru
函数将持续可用。虽然这是一个选项,但我更喜欢在
~/.config/fish/config.fish中使用
eval


作为一个钓鱼的noob,我如何使用类似于bash的
eval“$(uru\u rt admin install)”
eval
将这个
uru
函数动态注入到环境中?

fish的
eval
是一个内置的
源代码的包装函数,看起来有些奇怪(甚至可能是一个bug)当你通过多行时,继续它的参数分裂

但是,在这种情况下,如果只使用
源代码
,例如
uru\u rt-admin-install | source
,它会更简单、更快、更有效


这假设虽然确实需要调用
uru\u rt admin install
,但如果它所做的只是将代码打印到stdout,而不进行更改,那么您也可以简单地保存该函数,例如~/.config/fish/functions/uru.fish。

您的
uru\u rt admin安装|源代码
可以从
~./config/fish/config.fish
作为
~/.config/fish/functions/uru.fish