[linux-l] Datum in Script verwenden

Jan-Benedict Glaw jbglaw at lug-owl.de
So Apr 8 19:07:06 CEST 2007


On Sat, 2007-04-07 21:13:23 +0200, Boris Kirkorowicz <boris-ml07 at kirk.de> wrote:
> Hallo,
> Am 07.04.2007 12:37 schrieb Nico Golde:
> > >     #!/bin/bash
> > > oder auch:
> > >     #!/usr/bin/env bash
> 
> was ist denn der Unterschied zwischen den beiden Schreibweisen? Es wird
> ja mehr als nur ein Stilelement sein, oder?

Wenn Du '#!/bin/bash' in die erste Zeile schreibst, wird exakt dort
eine funktionierende bash erwartet. Das sollte auf den meisten
Systemen der Fall sein.

Aber gehen wir (wegen der Portabilität) mal ein wenig weg von Linux.
Dann versucht man, nur die POSIX sh zu nutzen. Und das ist *nicht* die
/bin/sh !  Die /bin/sh ist eine Bourne-Shell, nicht mehr, nicht
weniger. Bei einigen Systemen (Solaris zum Beispiel) muß man ein wenig
nachhelfen, damit POSIX-kompatible Programme aufgerufen werden (statt
der etwas altbackenen sonstigen Tools.)

Das macht man, indem $PATH um die Verzeichnisse erweitert wird, in
denen die POSIX-kompatiblen Tools liegen.  Leider weiß der
Script-Schreiber natürlich nicht, wo die denn liegen. Daher ist die
Anforderung, daß die POSIX-Tools als erste Tools in $PATH auftauchen
müssen. ...und /usr/bin/env macht nun genau das: Statt ein Tool mit
festem Pfad (das dann leider doch das falsche war...) aufzurufen, wird
in $PATH gesucht.  Somit liegt es in der Verantwortung desjenigen, der
ein Script aufruft, daß vorher $PATH (und ggf. weitere auf dem System
benötigte Einstellungen) passend gemacht werden.

Und wo wir schon dabei sind: Der tolle #!/bin/hassenichgesehen-Marker
ist zwar ganz nett, aber ein POSIX-konfirmes System muß ihn nicht
zwingend unterstützen.  Insofern müßte man eigentlich jedes Script
explizit mit seinem Interpreter aufrufen...

MfG, JBG

-- 
      Jan-Benedict Glaw      jbglaw at lug-owl.de              +49-172-7608481
Signature of:              Fortschritt bedeutet, einen Schritt so zu machen,
the second  :                   daß man den nächsten auch noch machen kann.
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : signature.asc
Dateityp    : application/pgp-signature
Dateigröße  : 189 bytes
Beschreibung: Digital signature
URL         : <https://mlists.in-berlin.de/pipermail/linux-l-mlists.in-berlin.de/attachments/20070408/61f68908/attachment.sig>


Mehr Informationen über die Mailingliste linux-l