I am trying to have my Makefile echo text without the trailing new line, but am unable to. I am experiencing the behavior on OS X (on Linux everything works as expected).
Something about the quotes confuses make
. Your code behaves the same for me, but the following works as expected:
help:
@echo -n Shouldn\'t print a newline
Hardcoding the path to the executable also works:
help:
@/bin/echo -n "Shouldn't print a newline"
The Mac OS X man page for echo
, while discussing the existence of shell built-in echo
s, mentions that the echo
of sh(1)
does not support the -n
option, but that fails to explain (to me, anyway) why my first alternative works.
Confirmation that make
is using sh
to execute the commands by default. In
SHELL = bash
help:
@echo -n "Shouldn't print a newline"
@echo -n Shouldn\'t print a newline
both echo statements behave the same (no newlines printed). So without that variable, we have bash
pretending to be sh
, but evaluating the two lines differently. Question 1: why? Question 2: is the second line the native bash
echo or /bin/echo
, rather than the emulated sh
echo
?