Depuis le Manuel GNU Make:GNU Make: Comment exporter la variable SHELL en sous-marques?
La valeur de la variable de marque SHELL est pas exporté. Au lieu de cela, la valeur la variable SHELL de l'environnement appelant est transmise à la sous-marque. Vous pouvez forcer à exporter sa valeur pour SHELL en utilisant la directive d'exportation , décrite ci-dessous.
Je dois faire quelque chose de mal ou de ne pas lire le manuel correctement, comme cet exemple simple ne fonctionne pas:
# ./Makefile
export SHELL := /bin/bash
export VALUE := exported_variable
$(info root makefile SHELL=$(SHELL))
call_sub_make:
$(MAKE) --directory=subdir
Et subdir/Makefile:
$(info subdir makefile SHELL=$(SHELL))
$(info subdir makefile VALUE=$(VALUE))
do_nothing:
sortie:
$ env | grep SHELL
SHELL=/bin/bash
$ make --version
GNU Make 3.81
$ make
root makefile SHELL=/bin/bash
make --directory=subdir
subdir makefile SHELL=/bin/sh
subdir makefile VALUE=exported_variable
make[1]: Entering directory `/home/drtwox/C/make/export_shell/subdir'
make[1]: Nothing to be done for `do_nothing'.
make[1]: Leaving directory `/home/drtwox/C/make/export_shell/subdir'
La valeur est exportée, pourquoi pas COQUILLE?