URL: <https://savannah.gnu.org/bugs/?55720>
Summary: Make cannot execute shell-builtin commands in recipe Project: make Submitted by: masahiroy Submitted on: Sat 16 Feb 2019 10:11:05 AM UTC Severity: 3 - Normal Item Group: None Status: None Privacy: Public Assigned to: None Open/Closed: Open Discussion Lock: Any Component Version: None Operating System: None Fixed Release: None Triage Status: None _______________________________________________________ Details: To print the install path of a command, you can use 'which', 'command -v', etc. They work in the same way: $ which gcc /usr/bin/gcc $ command -v gcc /usr/bin/gcc 'command' is included in POSIX, but 'which' is not. So, if you want to write as portable code as possible you may prefer 'command -v'. However, 'command -v' does not work in Makefile because it is a shell-builtin command. People generally expect recipe lines are executed in a shell. In fact, Make skips spawning a shell for optimization in some cases. Beginners who are unfamiliar with this Make-internal may wonder why. I attached a test Makefile. $ make all which gcc /usr/bin/gcc $ make all2 command -v gcc make: command: Command not found Makefile:6: recipe for target 'all2' failed make: *** [all2] Error 127 $ make all3 : ~; command -v gcc /usr/bin/gcc $(shell command -v gcc) does not work either. Probably for the same reason. Is this a bug that should be fixed? _______________________________________________________ File Attachments: ------------------------------------------------------- Date: Sat 16 Feb 2019 10:11:05 AM UTC Name: Makefile Size: 189B By: masahiroy <http://savannah.gnu.org/bugs/download.php?file_id=46278> _______________________________________________________ Reply to this item at: <https://savannah.gnu.org/bugs/?55720> _______________________________________________ Message sent via Savannah https://savannah.gnu.org/ _______________________________________________ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make