为什么 fish 会忽略函数中的第二个 'set' 命令?

Why would fish appear to ignore the second 'set' command in a function?

当我运行这个函数时,JAVA_HOME被设置,JUG_BT_ARCH没有被设置,'gello'被回显。我确定我遗漏了一些非常明显的东西。

function j8
  set -x JAVA_HOME /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/
  set -x JUG_BT_ARCH amd64-darwin11-xcode4
  echo gello
end

默认情况下,变量具有函数作用域,因此当函数结束时,它们就会消失。您可以通过 --global-g:

将它们设为全局
set -gx JUG_BT_ARCH amd64-darwin11-xcode4

现在,当您 运行 函数时,此变量将保留。