Fix for bug #1276: Handle SHELL according to POSIX requirements.

POSIX requires that the value of SHELL in the makefile NOT be exported
to sub-commands.  Instead, the value in the environment when make was
invoked should be passed to the environment of sub-commands.  Note that
make still uses SHELL to _run_ sub-commands; it just doesn't change the
value of the SHELL variable in the environment of sub-commands.

As an extension to POSIX, if the makefile explicitly exports SHELL then
GNU make _will_ use it in the environment of sub-commands.
This commit is contained in:
Paul Smith
2004-11-28 23:11:23 +00:00
parent d27cac1598
commit 539f513773
8 changed files with 150 additions and 46 deletions

View File

@@ -1,3 +1,15 @@
2004-11-28 Paul D. Smith <psmith@gnu.org>
Fix for bug #1276: Handle SHELL according to POSIX requirements.
* main.c (main): Set SHELL to v_noexport by default. Remember the
original environment setting of SHELL in the env_shell variable.
* main.h: Export new env_shell variable.
* variable.c (target_environment): If we find a v_noexport
variable for SHELL, add a SHELL variable with the env_shell value.
* doc/make.texi (Quick Reference): Document the POSIX behavior.
* doc/make.texi (Variables/Recursion): Ditto.
2004-11-28 Paul D. Smith <psmith@gnu.org>
* main.c (find_and_set_default_shell) [WINDOWS32]: check for