[linux-l] Re: Mac und Linux

Oliver Bandel oliver at first.in-berlin.de
Do Aug 3 18:30:52 CEST 2006


Hi,

On Thu, Aug 03, 2006 at 11:47:58AM +0000, Rocco Rutte wrote:
> Hi,
> 
> * Oliver Bandel [06-08-03 13:30:43 +0200] wrote:
> 
> >Naja, wenn man es als konsequent betrachtet, nicht als Schikane,
> >dann ist Linux da inkonsequent: erst die Switsches, dann die anderen
> >Args.
> 
> Die glibc nehme ich an. IMHO ist es dennoch ein Bug und ich habe 
> irgendwo eine sehr lange Diskussion darüber im Hinterkopf (evtl. d.a.s.r 
> oder so in der Richtung). Also benutze ich wohl kein getopt() mehr für 
> Software, die mit der glibc laufen könnte.

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.

Fehler abfangen kann man besser mit der strengen Version a la
OS-X/BSD, denn das ist quasi so wie eine Typprüfung.
Bequemer mag die Linux-Art-und-Weise sein (empffinde ich oft so,
da ich manchmal ein Kommando auf der Shell absetze und erst nachträglich
switches ergänze, falls notwendig ("user friendly")).


> 
> IMHO hat getopt() da überhaupt nichts an den Argumenten zu fummeln; es 
> hat sie genauso weiterzugeben wie es sie von der Shell bekommt und nur 
> eben auf zustätzliche Optionen pro Argument zu gucken.
> 
> >"-l" wird jedenfalls bei "ls * -l" unter OS-X angemeckert mit der Meldung,
> >es gäbe keine Datei namens "-l".
> 
> Hier auch, was sonst? Das kann aber auch andere Ursachen haben... :)

S.o. unter dem Debian ist das "-l" am Ende auch als ein switch interpretiert,
nicht nur wenn er vor den Dateinamen kommt.

Aber vieleicht kann man das auch vie Environment-Variablen einstellen.
Allerdings weiss ich nicht, welche das sein könnten.

Irgend welche Ideen dazu?


> 
> >Wobei ich finde, daß das - wenn man es unter dem Gesichtspunkt der
> >Sicherheit betrachtet - auch garnicht mal so schlecht ist, daß
> >immer erst die Switches kommen und dann andere Args folgen.
> 
> Naja, es gibt aber Streng genommen keine "Switches" und "normale" 
> Argumente. Es sind alles Argumente, von denen das letztendliche Programm 
> einigen (mit '-' am Anfang) eine spezielle Semantik zuweist.

Wenn Du es von der Programmierseite her mit argv[] betrachtest, dann
stimmt das. Aber es gibt da ja auch Konventionen, wie man die
Argumente interpretiert, und auf sowas bauen dann ja die Bibliotheken auf,
die den argv[] parsen und einem dabei die Programmierarbeit abnehmen.


> 
> Als Programmierer möchte ich die _exakt_ so bekommen wie der User sie 
> mir gibt,

Dann kannste das ja selber pasrsen, also argv[] selber untersuchen.
Weiter oben hast Du getopt() erwähnt.
Das müsstest Du demnach also gerne ignorieren?!


Ciao,
   Oliver



Mehr Informationen über die Mailingliste linux-l