Use a default path in exec*p*() if PATH is unset?

Christian Franke
Tue Apr 11 11:11:00 GMT 2017

Thomas Wolff wrote:
> Am 10.04.2017 um 22:29 schrieb Christian Franke:
>> A few years after
>> I found another use case of an unset PATH variable:
>> The configure script from mandoc ( uses this 
>> interesting approach to query default CC command from make:
>> CC=`printf "all:\\n\\t@echo \\\$(CC)\\n" | env -i make -sf -`
> Why does it `env -i` at all?

I guess because make result should not depend on environment. I agree 
that 'env -i' is probably to much, 'env -u CC' would be enough.

> (And why does it prepend a \ to the output?)

It doesn't. The extra \\ is required because `...` is used instead of 

$ printf "all:\\n\\t@echo \\\$(CC)\\n"
         @echo \$(CC)

$ CC=$(printf "all:\\n\\t@echo \\\$(CC)\\n" > /dev/tty)
         @echo \$(CC)

$ CC=`printf "all:\\n\\t@echo \\\$(CC)\\n" > /dev/tty`
         @echo $(CC)

> It seems this scriptlet has an issue, rather than adapting core 
> behaviour for it.

Of course Cygwin shouldn't be adapted solely for this single case.
But it possibly Cygwin should be adapted to the existing practice of 
various other open source *ix systems.

Interestingly the approach in newlib/libc/posix/execvp.c differs from 
Cygwin and others:
execvp() with PATH unset calls execv(). This has the same effect as 
execvp() with PATH set to current directory only.


Problem reports:
Unsubscribe info:

More information about the Cygwin mailing list