Am Mon, 2002-04-15 um 09.59 schrieb Christoph Maurer:
Am Mon, 15 Apr 2002 schrieb Thomas Bendler:
Hi,
On Sam, 13 Apr 2002, Bernhard Walle sent incredible lines:
On Sat, 13 Apr 2002 at 07:18 (+0200), Ralf Corsepius wrote:
1. Es gibt (ältere) Systeme, auf denen "[" nicht vorhanden ist, test hingegen schon (Auch bei SuSE ist "[" ein Symlink auf /usr/bin/test - Spielt unter SuSE aber praktisch keine Rolle, da test und "[" Built-ins der meisten (aller?) Shells sind). Was heißt 'älter'? Mir ist es ziemlich egal, ob meine Skripten, die wahrscheinlich meine Festplatte nie verlassen werden, auf Systemen von 1985 noch laufen!
Das dachte ich auch mal, bis ich das erstemal in einer grossen Firma (niederländischer Elektronik Konzern) an einem bisschen grösseren Unix System rumgebastelt habe und feststellen durfte das fast alle meine Bash Scripte nicht mehr auf der KSH liefen. Dann warte mal, bis Du auf die zsh-3.0.x (Bei einigen neueren OSen die Standard-Shell) oder die ash (Standard-Shell unter Cygwin) triffst ...
Ebenfalls problemtatisch wird das ganze dann in Verbindung mit Solaris einfacher sh. Da fängt man dann ganz fix an die portabelsten Konstrukte zu verwenden. Und wer weiss, vielleicht arbeitest du ja auch irgendwann mal bei einem solchen Konzern ;-)).
Ja, hatte auch gerade diese Tage wieder meine Probleme, als ich jemandem, der mit Solaris arbeitet, schnell ein Skript frickeln sollte.
:) Nur ist da "test" vs "[" nicht das Problem. Portabilitätsklassiker bez. Solaris vs. bash "test" sind SymLink-Checks (test -L), test -e und test ==. Daneben gibt es noch einige interessante Dinge bez. "||" (oder), "&&" (and) und "-a", "-o" und "!" (not). (vgl in autoconf.info, "Shellology") zu beachten. Bez "[" enthält die SunOS4-Manpage eine deutliche Warnung: [..] WARNING In the second form of the command (that is, the one that uses [], rather than the word test), [..] Some UNIX systems do not recognize the second form of the command. NOTES The test command is built into the Bourne shell, which chooses the 4.2 BSD or the System V version of test, depending on whether /usr/5bin appears before /usr/bin in the shell's PATH variable. This is consistent with the behavior of other commands present in both /usr/bin and /usr/5bin. [..] Die letzte Zeile macht test unter SunOS (und IIRC auch Solaris) erst recht spannend. :) Auch wenn manche jetzt glauben werden, dass SunOS4 keine Rolle mehr spiele - SunOS4 ist deutlich häufiger zu finden als man glaubt.
[...]
2. Es gibt (ältere) Systeme, auf denen "[]" ein "Path-Separator" ist (ähnlich '\' unter DOS, bzw. '/' unter Unix) Siehe oben. Außerdem: Welche Systeme wären das? Laufen darauf überhaupt Bash-Skripte? Und wieso soll es dadurch Probleme geben? [...]
Gesehen habe ich das auch schon mal, ich weiss jetzt allerdings nicht mehr auf was für einem System (IIRC war das irgendwas im S/390 Umfeld). Zur Frage mit den Bash Scripten, zu 90% nein, was anderes ist es aber wenn du Shell Scripte schreibst.
Auf VMS ist [] auch ein Bestandteil das Pfadnamens, Und wie ist das unter OpenVMS? Dort müsste es Unix-artige Shells geben.
Pfade sehen dort so aus LAUFWERK:[VERZEICHNIS.UNTERVERZEICHNIS.UNTERVERZEICHNIS2]DATEINAME Aber dort gibt es keine Unix-Shells, leider...
Ich bilde mir ein, es gab schon vor 10 Jahren (Seither hatte ich keine Kontakt mehr zu VMS) unter VMS eine Art (rudimentäre) /bin/sh, die mit VMS-Pfaden gearbeitet hat. Ausserdem gab zumindest Versuche, die bash auf VMS zu portieren - ob man das weitergetrieben hat, oder ganz aufgegeben hat, weiss ich leider nicht. Ralf