make importiert nicht shell-Umgebungsvariablen
Hi,
beim Erstellen und Testen diverser Makefiles auf meinem System (testing/unstable) ist mir
aufgefallen, dass die Umgebungsvariablen der Shell (Bash 3.1) nicht importiert werden, was
ja normalerweise der Fall sein sollte, oder? Das Test-Makefile (make-Version 3.81)
os:
echo $(OSTYPE)
liefert dann
andre@orca:newton 192>make --warn-undefined-variables
makefile:2: Warnung: undefinierte Variable »OSTYPE«
echo
und somit nur eine schicke Leerzeile, obwohle die Variable laut "set" definiert ist.
andre@orca:newton 193> set |grep OSTYPE
46:OSTYPE=linux-gnu
Insgesamt ist mir folgendens aufgefallen:
Wenn ich Variablen in meiner .bashrc eintrage, so sind sie dann auch im Makefile verfügbar
(das enprach ca. der Ausgabe von "printenv")
Variablen, die "set" anzeigt (wie z. B. OSTYPE), nicht aber "printenv", stehen nicht zur
Verfügung. Deswegen also meine Fragen:
1) Welche Variablen genau spuckt printenv aus?
2) Welche Variablen im teilweisen Gegensatz dazu spuckt "set" aus?
3) Wo genau werden denn bloß die ganzen (Standard)-Variablen gesetzt, die mir "set"
ausgibt, ein grep -R in /etc liefert mir weder OSTYPE, HOSTNAME, HOSTTYPE usw., weder
in /etc/profile, /etc/skel noch sonst wo.
3)Welche Umgebungsvariablen liest make denn nun genau aus?
Irgendwas in dem ganzen Variablen-Definier-und-Gebrauch-Durcheinander habe ich wohl falsch
verstanden, aber was?
Vielen Dank und viele Grüße,
Andre
Reply to: