[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: make importiert nicht shell-Umgebungsvariablen



Peter.Weiss@ConSol.de schrieb:
> 
> 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.)

Danke für den Verweis!

> 
> $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
> 

Okay, mal sehen, ob ich das nun "verstehe" :-) Also bei mir steht in jeder (Bash)-Shell
die Variable OSTYPE zur Verfügung. Beim Starten von make liest make aber anscheinend nur
die Variablen ein, die ich mir auch mittels printenv ausgeben kann. Exportiere ich OSTYPE
vorher, sieht es sowohl printenv als auch make. Was mich wieder zu der Frage bringt, wo
eigentlich die meisten der Umgebungsvariablen (OSTYPE, HOSTNAME,...) TATSÄCHLICH unter
Debian definiert werden. Ich habe mit "strace bash" mal versucht nachzuvollziehen, welche
evt. relevanten Dateien beim Start gelesen werden, leider habe ich da auch nur die
bekannten Config-Dateien erkannt, in denen eben nicht die meisten Variablen definiert werden.

[...]
 open("/home/andre/.bashrc", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=2515, ...}) = 0
brk(0x81a1000)                          = 0x81a1000
read(3, "# ~/.bashrc: executed by bash(1)"..., 2515) = 2515
[...]

Ich befürchte, ich habe ein erhebliches "Shells und Ihre Variablen"-Verständnisproblem. :-)
Wenn jemand bereit wäre, mich aufzuklären, wäre ich sehr dankbar. Diverse info-Seiten,
Bashguides des tldp usw. haben mir keine befriedigen Antwort geliefert. Angeblich sollen
die systemweiten Variablen in /etc/profile, /etc/bashrc oder dergleichen gesetzt werden,
was aber (bei mir) nicht der Fall ist.

Viele Grüße
Andre









Reply to: