[linux-l] POSIX und busybox (was: Subtilitäten von find und xargs)

Oliver Bandel oliver at first.in-berlin.de
Sa Nov 17 12:30:35 CET 2007


Zitat von Mike Dornberger <Mike.Dornberger at gmx.de>:

> Hi,
>
> On Sat, Nov 17, 2007 at 01:12:13AM +0100, Steffen Dettmer wrote:
> > * Mike Dornberger wrote on Fri, Nov 16, 2007 at 02:23 +0100:
> > > > externes_Programm ist entweder POSIX und gut oder nicht und
> > > > durchgefallen - oder?
> > >
> > > externes_Programm_macht_Ausgabe = (eines m)ein(r) Shellscript(e),
> > > "beliebige" Ausgabe per echo oder printf? *gnnna* Ich sehe schon, geht
> > > bestimmt wieder nicht ohne ein Beispiel:
> >
> > ja, ich versteh wirklich kein Wort...
>
> hm, reden wir vielleicht aneinander vorbei?
>
> Ich bezog mich immer darauf, daß ich _Shell-Scripte_ schreiben will, deren
> Syntax (nach Möglichkeit) POSIX-konform ist (und die nicht zu aufgebläht
> sein sollen).

Ach so, also doch keine automatisierte Prüfung?



[...]
> Mir geht es darum, daß ich mir durch praktische Übung bewußt mache, was
> POSIX ist und was nicht und wo ich nachschauen kann, wenn ich mir nicht
> sicher bin, etc. pp.

Mit welchem Ziel?
Einfach, um dann darüber bescheid zu wissen?
Oder sollen Deine Scripte dadurch auch portabler werden?


[...]
> Wenn du meinen Text oben nochmal liest, steht da was von 2 Scripten. Diese
> sind natürlich nicht vollständig unabhängig voneinander und gehören zum
> selben "Projekt". Wichtig ist halt, daß beide mit der _selben_ (sozusagen
> synchronen) Liste von Dateien/Verzeichnissen arbeiten müssen.

Also ein Verteilerscript nehmen, das den Zugriff regelt / synchronisiert...


[...]
> > > Oh, mir fällt noch ein einfacherer Fall ein, der tatsächlich auch
> > > große Relvanz hat: 'eval `ssh-agent`' und 'eval `ssh-agent -k`'
> > >
> > > Und nun teste mal ein Script auf POSIX-konformität, daß irgendwo eval
> > > `ssh-agent -k` aufruft.
> >
> > Ist es nicht, weil ssh-agent muss ja gar nicht existieren.
>
> Du hast keine Phantasie. ;) Stell dir doch einfach vor, ich möchte testen,
> ob meine .profile POSIX-konform ist und da hab ich halt eine Funktion
> definiert, die ich aufrufen kann, wenn ich einen bestimmten ssh-agent killen
> will. So, und nun, was passiert, wenn ich auf irgendeiner Konsole ein Script
> benutze, daß intensiv, in mehreren Aufrufen, diesen Agenten benutzt und ich
> nun den Tester anwerfe? Schwups, Agent weg und beim Script scheppert's.
[...]

Tester oder Killer?


>
> > Aber so einfach ist das in der Praxis ja auch nicht, weil man könnte ja
> > ein Script machen, was prüft, ob ssh-agent vorhanden ist oder nicht,
> > oder ob find den Schalter --xyz kennt oder nicht usw. Dabei sind aber
> > natürlich die Grenzen wieder fliessend, weil wenn man erlaubt, dass ein
> > POSIX-konformes Script konform ist, auch wenn unter POSIX-OS nur ein
> > Teil der Funktion gehen muss, könnte man ja wieder ein Script haben,
> > was bloss noch sagt "bash ist nicht installiert" oder so. Wäre konform,
> > aber sinnlos. Na ja, kommt auf den Fall an etc pp.
>
> Naja, eigentlich wollte ich am Anfang der Diskussion mit meinem Einwurf nur
> sagen, daß so ein Testtool entweder wohl ziemlich schnell an seine Grenzen
> stößt oder halt Dinge im laufenden Betrieb einfach kaputt machen kann.


Man müsste die Aufrufsyntax prüfen.
Das sollte machbar sein.
Aber mit einem Shell-Script wirst Du da nicht
weit kommen, sondern musst einen Parser für Deine
jeweilige Shell bauen.

Oder gleich eine Prüfung in die Shell hacken.

Dann kann man aber auch gleich eine Shell anbieten,
die weitere Prüfungen vornimmt.
Man könnte ja auch eine Shell bauen, die eine
rigide Typprüfung vornimmt. Das wäre IMHO noch wesentlich pingeliger,
als was man in POSIX-Definitionen finden wird.

Oder eben ein externes Tool, das für diverse Shells
die Aufrufe checkt. Wenn eine Shell aber nur eine
eingeschränkte Syntax akzeptieren würde, müsste man nichts
externes mehr testen, denn es läuft nur, wenn es korrkt aufgerufen wird.

Dann müssten die Programme aber alle mit dieser Shell gebaut sein,
man also nur diese eine Shell erlauben.

Oder man baut so eine Prüfung in die Syntax-Checks aller
Shells ein.

Ich denke, das wird so nicht machbar sein, da das kaum jemand
haben wollen würde. (Oder wer portiert die vielen Scripte, die
dann nicht mehr laufen würden?!)



Ciao,
   Oliver



Mehr Informationen über die Mailingliste linux-l