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 <[email protected]>
To: Mark Galeck <[email protected]>; "[email protected]"
<[email protected]>
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
[email protected]
https://lists.gnu.org/mailman/listinfo/help-make