[linux-l] Re: Mac und Linux

Volker Grabsch vog at notjusthosting.com
Fr Aug 4 09:12:51 CEST 2006


On Thu, Aug 03, 2006 at 05:17:49PM +0000, Rocco Rutte wrote:
> >On Thu, Aug 03, 2006 at 11:47:58AM +0000, Rocco Rutte wrote:
> 
> >Ich rede nicht vom Programmierinterface, sondern
> >von der Shell-Benutzung.
[...]
> >Wenn ich unter OS-X die bash habe, dann darf ich nur erst die switches
> >und dann die anderen Args nehmen.
> >Wenn ich unter Linux (Debian jedenfalls) die bash benutze, dann ist
> >es egal, ob die switches am Anfang oder auch hinten folgen, denn
> >das geht beides.
> 
> Naja, du weisst aber nicht, wie ls programmiert ist. Die Shell sortiert 
> das auf gar keinen Fall um. Wenn, dann macht das getopt(). Und wenn 
> ls(1) das benutzt (selbst als Shell-Builtin kann es das), dann bekommst 
> du mit einer anderen C-Bibliothek zwei unterschiedliche getopt()s und 
> demnach auch unterschiedliches Verhalten identischen (Bash-)Codes. Oder 
> verstehe ich was falsch?

ACK. Oliver hat sich geirrt. Mit der Shell hat das überhaupt nichts
zu tun. Die Argumente werden erst von den einzelnen Programmen
verarbeitet. Das einzige, was die Shell macht, ist das Ersetzen
von "*" gegen alle Dateien und Verzeichnisse im aktuellen Verzeichnis.

(d.h. aus "ls * -l" wird "ls datei1 datei2 verzeichnis1/ ... -l")

OT:  Das wiederum ist übrigens *wirklich* abhängig von der Shell. Ein
typisches Portabilitäts-Problem tut sich auf, da z.B. unter Windows
das "*" als "*" übermittelt wird, man also das "glob()" selbst
aufrufen muss. Erwartet man viele Dateien als Argumente, sollte
man also auf jeden Fall "glob()"en, und sich nicht darauf verlassen,
dass es die Kommandozeile für einen tut.


Viele Grüße,

    Volker

-- 
Volker Grabsch
---<<(())>>---
Administrator
NotJustHosting GbR



Mehr Informationen über die Mailingliste linux-l