[linux-l] Portable Shellscripte (was: Datum in Script verwenden)

Volker Grabsch vog at notjusthosting.com
Do Apr 12 09:41:18 CEST 2007


On Thu, Apr 12, 2007 at 09:28:13AM +1000, Peter Ross wrote:
> Eigentlich habe ich bis jetzt jedes Skript so schreiben koennen, dass es 
> mit jeder /bin/sh auskommt. Brauchen tut man darueber hinaus nichts 
> wirklich, es ist eine Sache der Disziplin.

Wie bei allen komplexen Tätigkeiten (i.e. Programmieren), die Disziplin
erfordern, sind Fehler nahezu vorprogrammiert. Das heißt, man muss
testen. Aber wogegen?

Wie stellst du sicher, dass deine Shellscripte wirklich mit jeder Shell
laufen, selbst mit denen, die du nicht auf deinem Rechner hast, und
unter Unixen, die du nicht bei dir zu Hause hast (z.B. Solaris).

Ich bin mit vermeintlich portablen Scripte sowas von schnell an die
Grenzen gestoßen, als ich sie unter Solaris zum Laufen bringen wollte.
Das fängt damit an, dass man kein "\r" hat, sondern ein ^M direkt in
die Scriptdatei reinhämmern muss. Und es geht weiter mit etwas anderen
Parametern für sed, tar, etc.

(z.B. gibt's kein "tar -z" und kein "sed -i")

> Das ist bei Linux doch noch viel wichtiger als bei anderen Systemen. 
> Linux-Distributionen haben kein fest definiertes Basissystem, so dass 
> beliebige Shellpakete (bash, dash, zsh..) /bin/sh besetzen koennen, und 
> man nicht davon ausgehen kann, dass eine der Shells einfach da ist.

ACK.

> Wenn man dann etwas ueber Bourneshell Hinausgehendes verwendet, ist es 
> u.U. nicht mal zwischen Rechnern einer Distribution portabel:-(

Mit einem #!/bin/bash wäre es das schon. Zumindest wäre dann klar,
unter welcher Shell es gestartet werden soll. Klare Verhältnisse
statt "Hups, mit Shell XYZ funktioniert's doch nicht. Kleiner Fehler,
aber wo genau? Nehm ich ne andere Shell ... hmm, in dem Script steht
gar nicht drin, mit welchen Shells es getestet wurde ..."


Viele Grüße,

    Volker

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



Mehr Informationen über die Mailingliste linux-l