Make

GNU Make 文件中使用了哪個 shell?

  • May 16, 2020

我在 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 。

引用自:https://unix.stackexchange.com/questions/217243