Make
GNU Make 文件中使用了哪個 shell?
我在 makefile 規則中看到過
echo
,mv
,if
, , 之類的東西。for
似乎可以辨識某種 shell 命令。這是狂歡嗎?如何確定正在使用的 shell 以及可用的關鍵字的完整列表?
它是
sh
:然後執行行將由 shell 執行,就像它作為參數傳遞給system()介面一樣
system()
使用sh
. 您絕對可以使用POSIX Shell 命令語言的關鍵字,以及您希望在主機平台上可用的任何非關鍵字命令。
sh
在您的系統上實際上可能是不同 shell 的另一個名稱(如bash
),在這種情況下,您將有更多可用選項。不過,那種 makefile 不會是可移植的。當您特別詢問 GNU make 時,我還會注意到它允許您指定要在 makefile 中使用的不同 shell,但是該 makefile 將不能移植到
make
. 正如 POSIX 指定的那樣, GNUsh
預設使用 make 。