Shell
使用 Fish shell 時 MAKEFLAGS 的正確格式是什麼?
為了縮短編譯時間,Arch wiki指出,
擁有多核/多處理器系統的使用者可以指定同時執行的作業數量。這可以通過使用
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)'
以下哪一個是正確的方法?或者他們倆都好嗎?
謝謝
兩者都不。在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)
從 fish 3.4.0 開始,可以使用
"$()"
語法引用命令替換,因此原始命令現在可以使用。