In this case, the operative observation is bash != ash. PWD is a bash
construct. You would be much better off just using the gnu make
"CURDIR" variable. Changing PWD to CURDIR in your examples makes things
work as you'd expect.
Thanks for the quick response and workaround.
While what you say might be a true statement, "better off" means
different things to different people!
What surprised me was that the same shell, and same make, resulted in
different behaviour. I guess this is just reflecting differences in the
underlying process architectures of Linux vs Windows.
Again, it *isn't* the same shell. You have now learned that it isn't
the same shell and you now know that this is the reason for the
inconsistency. ash isn't normally used as /bin/sh on linux. A stripped
down version of ash is used as /bin/sh for performance purposes on
cygwin. ash does not set PWD.