I'm probably doing something stupidly wrong, but man make says: As in C, make will only evaluate a conditional as far as is necessary to determine its value. however, x= /nonexistent .if exists(${x}) && ${x:sh} != 0 .endif complains sh: /nonexistent: not found what am I missing?