Re: make importiert nicht shell-Umgebungsvariablen
On Jan 20 2006 Andre Massing <massing@gmx.de> wrote:
> Daniel Leidert schrieb:
>
>>
>>
>> echo $$OSTYPE
>>
>> ist wohl das, was du suchst.
>
> Ja, danke, das funktioniert, aber "leider" nur, weil nun die Shell, an der
> die Zeile übergeben wird, die Variable expandiert (und nicht make direkt),
> und die Shell ja OSTYPE kennt. Dennoch ist mir der Selektionsmechanismus,
> den Make bezüglich meiner Shell-Variablen an den Tag legt, nicht klar ( im
> Zusammenhang mit den von printenv und set gezeigten Variablen).
>
> [...]
Schau Dir mal die info-pages zu make an:
6.9 Variables from the Environment
==================================
Variables in `make' can come from the environment in which `make' is
run. Every environment variable that `make' sees when it starts up is
transformed into a `make' variable with the same name and value.
However, an explicit assignment in the makefile, or with a command
argument, overrides the environment. (If the `-e' flag is specified,
then values from the environment override assignments in the makefile.
*Note Summary of Options: Options Summary. But this is not recommended
practice.)
[...]
Wenn ich bei mir das teste:
~:1> cat makefile
all:
echo $(OSTYPE)
~:1> echo $OSTYPE
linux-gnu
~:1> make
echo
~:1> export OSTYPE
~:1> make
echo linux-gnu
linux-gnu
~:1> export OSTYPE=foo
~:1> make
echo foo
foo
$OSTYPE wird von der Shell (bei mir bash) standardmäßig nicht exportiert.
OSTYPE steht in bash(1) in der Liste der Shell Variables, da ist aber keine
Aussage zu finden ob die exportiert sind oder nicht.
~:1> printenv | grep OSTYPE
~:1> export OSTYPE
~:1> printenv | grep OSTYPE
OSTYPE=linux-gnu
Hth -- Peter
--
Peter.Weiss@consol.de ConSol* Software GmbH
Phone +49 89 45841-100 Consulting & Solutions
Mobile +49 177 6040121 Franziskanerstr. 38
http://www.consol.de D-81669 München
Reply to: