Heino Tiedemann <rotkaps_spam_trap(at)gmx.de> wrote:
> Oliver Fromme <olli(at)lurza.secnetix.de> wrote:
> > baz=hurz Programm
> >
> > hat exakt denselben Effekt wie:
> >
> > (export baz=hurz; Programm)
> >
> > Sprich: Das Programm wird mit der angegebenen Variablen
> > im Environment aufgerufen. Das Environment der aufrufenden
> > Shell bleibt unbeeinflußt.
>
> Is klar. mein liebstes Beispiel
>
> LANG= man <irgendwas>
Naja, wenn man unbedingt LANG global gesetzt haben möchte,
dann kann das wohl zuweilen notwendig sein. Ich würde eher
davon abraten, LANG zu setzen.
> (die deutschen manpages sind oft nicht vollständig)
Die sind sogar überwiegend völlig falsch, weil für ein GNU-
Linux-System, das noch dazu vollkommen veraltet ist.
> > In der Praxis ist es also meistens wurscht, ob man dem make
> > eine Variable im Environment oder per Argument übergibt.
>
> D A N K E!
>
> > Es gibt aber auch Ausnahmen.
>
> Ich bin gespannt! Welche?
Der knifflige Punkt ist, inwieweit sich die Angaben aus dem
Environment, von der Kommandozeile und aus dem Makefile
sich gegenseitig overriden. Auch hierzu sollten Details in
make(1) zu finden sein.
Mal ein einfaches Beispiel zum Nachvollziehen. Leg ein
leeres Verzeichnis zum Testen an und erzeuge darin eine Da-
tei »Makefile« mit folgendem Inhalt:
FOO=fasel
BAR+=blubber
all:
@echo ${FOO}
@echo ${BAR}
Die beiden letzten Zeilen beginnen jeweils mit einem Tab,
keine Leerzeichen. Jetzt probier mal drei Varianten aus:
$ make
fasel
blubber
$ make FOO=xxx BAR=yyy
xxx
yyy
$ FOO=xxx BAR=yyy make
fasel
yyy blubber
Wie Du siehst, werden Environment-Variablen nur dann als
Default hergenommen, wenn nichts anderes definiert ist.
Die Kommandozeilen-Zuweisungen dagegen haben Priorität vor
allem anderen, inklusive globale Zuweisungen im Makefile
selbst (oder in /etc/make.conf).
Gruß
Olli
-- Oliver Fromme, secnetix GmbH & Co. KG, Marktplatz 29, 85567 Grafing Dienstleistungen mit Schwerpunkt FreeBSD: http://www.secnetix.de/bsd Any opinions expressed in this message may be personal to the author and may not necessarily reflect the opinions of secnetix in any way. "If you think C++ is not overly complicated, just what is a protected abstract virtual base pure virtual private destructor, and when was the last time you needed one?" -- Tom Cargil, C++ Journal To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org with "unsubscribe de-bsd-questions" in the body of the messageReceived on Thu 01 Dec 2005 - 10:12:50 CET