Re: Shell-Programmierung

From: Oliver Fromme <olli(at)secnetix.de>
Date: Wed, 23 Apr 2003 20:59:58 +0200 (CEST)

Joerg Over <over(at)dexia.de> wrote:
> Am 18:15 23.04.2003 +0200 teilte Oliver Fromme mir folgendes mit:
> ->Ehm, nein, wieso sollte das dort wahrscheinlicher sein?
> ->Das Environment sollte exakt das gleiche sein. Es gibt
> ->keinen Grund, für die Pipe eine xplizite Subshell aufzu-
> ->machen.
>
> Hm...
>
> >sh -c '( barney=fred; ) && ( echo $barney; )'
>
> >
>
> >sh -c '{ barney=fred; } && { echo $barney; }'
> fred
> >
>
> Ist, wenn das Environment von kommando1 geändert wird, *nicht*
> das gleiche, genau wie ich sagte. QED.

Nix QED. :-)
Schau Dir nochmal die Zeile an, um die es ging:

   kommando1 && { kommando1 | kommando2;} || exit 1

Wo wird da das Environment von kommando1 geändert?!?
Das kommando1 selbst kann das Environment der Shell, von
der es aufgerufen wird, selbstverständlich nicht ändern.
Ich sehe in obiger Zeile _keine_ Möglichkeit, daß die
beiden Aufrufe von kommando1 versehentlich ein unter-
schiedliches Environment bekommen könnten.

Die von Dir genannten Beispiele mit »barney=fred« haben
keine Relevanz zu diesem Fall. Daß eine Zuordnung einen
Einfluß auf das Environment hat (OK, ein »export« fehlt
noch), ist ja logisch. Aber ein aufgerufenes Programm
kann das nicht.

> ->Die temporäre Datei erzeugt vermutlich keinen Platten-I/O,
> ->es sei denn, Kommando1 erzeugt sehr viel Ausgabe, oder es
> ->läuft sehr lange, was wiederum ein Grund dafür wäre, es
> ->nur einmal laufen zu lassen.
>
> Wie gesagt, nach wie vor zu wenig Info über kommando1 um diese
> Aussage zu treffen.

Klar, wir können beide nur spekulieren. Ich sage auch
nicht, daß Dein Vorschlag überhaupt nicht taucht. Wir ha-
ben das Problem halt von unterschiedlichen Blickrichtungen
beleuchtet.

Man kann nur ein paar mögliche Fälle abwägen (was ich ver-
sucht habe). Mit der Temporärdatei sehe ich da noch am we-
nigsten Probleme, denn wenn kommando1 kurz läuft und wenig
Ausgabe produziert, dann fällt File-I/O nicht ins Gewicht
(Soft-updates optimiert das weg, wenn nicht /tmp ohnehin
auf einem MFS oder MDFS liegt). Läuft es dagegen länger
und produziert viele Ausgaben, möchte man es sowieso lieber
nicht zweimal laufen lassen.

Es sind natürlich Grenzfälle denkbar, in denen diese ganzen
Überlegungen wieder hinfällig werden ...

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"The only reasonable alternative we can come up with is to close off the
Internet to America Online users until they have passed an entrance test.
But that would break federal laws that prohibit discrimination against
the intellectually challenged." -- hhahn(at)boardwatch.com
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Wed 23 Apr 2003 - 21:00:04 CEST

search this site