Bash is abnormal in Makefile!

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 found

Any 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 "[["?

0

2 Answers

Place this at the top of your Makefile:

SHELL := /bin/bash # Use bash syntax

This 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.

1

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

You Might Also Like