使用 Fish shell 时 MAKEFLAGS 的正确格式是什么?

使用 Fish shell 时 MAKEFLAGS 的正确格式是什么?

为了缩短编译时间,拱门维基状态,

拥有多核/多处理器系统的用户可以指定同时运行的作业数量。这可以通过使用 来nproc确定可用处理器的数量来完成,例如 MAKEFLAGS="-j$(nproc)"

如果我通过在 Fish shell 中设置它set -Ux MAKEFLAGS "-J$(nproc)",则会收到错误:

fish: $(...) is not supported. In fish, please use '(nproc)'.
set -Ux MAKEFLAGS "-J$(nproc)"
                     ^

我可以通过两种方式设置此变量而不会收到错误:

  1. set -Ux MAKEFLAGS "-J(nproc)"

  2. set -Ux MAKEFLAGS '-J$(nproc)'

其中哪一个是正确的方法?还是他们俩都还好?

谢谢

答案1

两者都不。在fish中,命令替换不能被引用。

set arg "-J(nproc)"
set -S arg
$arg: set in global scope, unexported, with 1 elements
$arg[1]: |-J(nproc)|

使用

set -Ux MAKEFLAGS "-J"(nproc)

答案2

从 Fish 3.4.0 开始,可以使用语法引用命令替换"$()",因此原始命令现在可以使用。

相关内容