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

Mike Dornberger Mike.Dornberger at gmx.de
Fr Nov 16 02:23:13 CET 2007


Hi,

On Thu, Nov 15, 2007 at 07:55:56PM +0100, Steffen Dettmer wrote:
> * Mike Dornberger wrote on Mon, Nov 12, 2007 at 03:47 +0100:

> > Denke nur daran, daß du mit
> > VARIABLE=`externes_Programm_macht_Ausgabe`; eval $VARIABLE schon Dinge
> > machen kannst, die kein automatisches Tool nachvollziehen kann.
> 
> 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:

Ich habe so ein Konstrukt neulich mal gebraucht um aus einer Datei (Liste
von Verzeichnissen/Dateien, jeweils mit \n separiert), in einem Script ein
find \( -path "./datei_dir1" -or -path "./datei_dir2*" \) und einem anderen
Script ein rsync-Kommando zusammenzubauen, wobei für letzteres Spaces
gequotet werden mußten. Die Kommandos werden in einer Variablen
zusammengebaut und anschließend eval "$Variable". Nun ist zwar rsync wohl
nicht POSIX, aber find.

Und wenn ich die Variable nun mit einem externen Programm zusammengebaut
hätte?

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. Der Test muß ja das Programm ausführen, um an die
Ausgabe zu kommen, um die testen zu können, ob diese konform ist. Resultat:
Agent weg und du mußt alle Paßphransen neu eingeben.

> > Außerdem könntest du deine Shell-Scripte mit der posh testen. (Heißt
> > jetzt Policy-compliant Ordinary SHell, aber ich glaube, sie hieß mal
> > POSIX-Shell.)
> 
> hum, kennt nichtmal wikipedia, hast'n Link? Kann man das wirklich
> benutzen?

http://packages.debian.org/posh

... und wie ich gerade im Copyright-File sehe (da ich dir noch die
Upstream-Seite raussuchen wollte): Wohl eine Entwicklung eines
Debian Developers. Wobei nun klar wird, warum sie vielleicht nur als
"Spitznamen" POSIX-Shell hat. :)

Aber ich hätte vielleicht besser von dash schreiben sollen.
http://packages.debian.org/dash

Die Beschreibung sollte ja erhellend genug sein. Zusätzlich zu dem
Geschriebenen glaube ich mich zu erinnern, daß die/einige Debianer dash
gerne als /bin/sh hätten, damit die bash auch aus dem Basissystem (oder der
Essential-Liste?) heraus kann.

Ich hatte das unter Sarge auch mal probiert, aber einige Wrapper, wie z. B.
zless benutz(t)en Bash-Konstrukte, obwohl sie eine #!/bin/sh Zeile haben,
sodaß ich wieder die bash als Link-Zeil von /bin/sh eingestellt hatte.

Gruß,
 Mike



Mehr Informationen über die Mailingliste linux-l