2010-07-12 4 views
1

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?

Répondre

2

SHELL est exportée (à l'environnement de la sous-marque) va bien, mais the manual dit aussi

Contrairement à la plupart des variables, la variable SHELL est jamais définie de l'environnement.

Si vous voulez influencer l'idée de sous-marque de SHELL, vous devrez le faire comme ceci:

call_sub_make: 
    $(MAKE) --directory=subdir SHELL=$(SHELL) 
Questions connexes