为了缩短编译时间,拱门维基状态,
拥有多核/多处理器系统的用户可以指定同时运行的作业数量。这可以通过使用 来
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)"
^
我可以通过两种方式设置此变量而不会收到错误:
set -Ux MAKEFLAGS "-J(nproc)"
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 开始,可以使用语法引用命令替换"$()"
,因此原始命令现在可以使用。