all,
I have found that the same Makefile works well in Mac OS X, but does not work in Ubuntu. The snippet is as following:
start: @echo $(seperator) @if [[ "$(PROJECT)" == "" ]]; then \ echo " Project powered by CodeMate!"; \ else \ echo " $(PROJECT)"; \ fi @echo $(seperator)and make complains:
/bin/sh: [[: not foundAny idea?
Cheers,
Li
Updates:
I have changed the above conditional Bash statements to:
if test "$(PROJECT)" = ""; then \then things work fine. So what is wrong with "[["?
02 Answers
Place this at the top of your Makefile:
SHELL := /bin/bash # Use bash syntaxThis happens because [[ is a builtin command of bash and you're running it with sh. The above line will set bash as default interpreter for the commands ran on makefile.
Makefiles use sh by default, not bash.
In Ubuntu sh point to dash, a POSIX compliant and minimalistic shell, not providing the [[ keywork.