Thank you Paul. Of course you were right from the beginning. The reason why the behaviour was different when I modified Make to always spawn a shell, is because with unmodified Make, it uses the parent shell and the modified Make uses a shell that is present in /bin/sh during the run of Make, which is different than the parent shell. Mark
From: Paul Smith <psm...@gnu.org> To: Mark Galeck <mark_gal...@pacbell.net>; "help-make@gnu.org" <help-make@gnu.org> Sent: Saturday, April 16, 2016 7:01 AM Subject: Re: how to (correctly) modify GNU Make so that separate shell is always spawned for each command On Sat, 2016-04-16 at 05:16 +0000, Mark Galeck wrote: > I guess you are saying that in fact the Make statement > > export VAR-Y := val > > (attempts to) establish a shell (environment) variable, and is not > merely a Make construct. Is that what you are saying? Yes, that's what the "export" keyword does: it tells make to put the variable into the environment when it invokes a command as part of a recipe. See the GNU make manual: http://www.gnu.org/software/make/manual/html_node/Variables_002fRecursion.html The only ways for one program to pass information to another program in UNIX are through the command line and through the environment (unless you want to use more complex and non-portable methods such as shared memory etc.) The export keyword tells make to put the variable into the environment. _______________________________________________ Help-make mailing list Help-make@gnu.org https://lists.gnu.org/mailman/listinfo/help-make