Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ xpg4_sh(1) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ksh(1)

sh(1)

xpg4_sh(1)                                                       xpg4_sh(1)

NAME
     xpg4sh - XPG4-Shell

SYNTAX
     /sbin/xpg4/sh [option ...] [datei] [argument ...]

BESCHREIBUNG
     Die XPG4-Shell ist weitestgehend identisch mit der Korn-Shell [vgl.
     ksh(1)]. Da die Korn-Shell aber nicht alle Bedingungen erfüllt, die
     von X/Open (siehe CAE Specification, Commands and Utilities, Issue 4)
     für die Shell gefordert werden, wird eine Shell unter /sbin/xpg4/sh
     mitausgeliefert, die auch die restlichen Bedingungen von XPG4 (X/Open
     Branding) erfüllt.

     Die Korn-Shell ksh wurde nicht vollständig an XPG4 angepaßt, weil sie
     sich in vielen Fällen eher wie die Bourne-Shell sh verhalten soll. Um
     in solchen Fällen nicht inkompatibel zum bisherigen Verhalten der
     Korn-Shell zu werden, wurden die Änderungen gesondert für eine spe-
     zielle XPG4-Shell durchgeführt.

     Zur Zeit ist die Standard-Shell (/sbin/sh) auf die Bourne-Shell
     gelinkt (/sbin/bourne/sh). Wünscht man als Standard-Shell die XPG4-
     Shell, so muß der Link auf /sbin/xpg4/sh gesetzt werden.

   Unterschiede zwischen der Korn-Shell und der XPG4-Shell

     1. Wird beim Aufruf der Shell hinter der Option -o nichts angegeben,
        so gibt die XPG4-Shell folgende Meldung auf die Standardfehleraus-
        gabe aus: ksh: '': bad option(s).

        Die Korn-Shell gibt dagegen die erlaubten Optionen auf die Stan-
        dardausgabe aus.

     2. Bei der Korn-Shell ist time am Zeilenanfang ein Schlüsselwort (wie
        if, then usw.; vgl. ksh(1), Abschnitt Reservierte Wörter). Bei der
        XPG4-Shell (wie auch bei der Bourne-Shell) ist time ein normales
        Benutzerkommando (/usr/bin). Abweichungen bezüglich time machen
        sich wie folgt bemerkbar.

        Das Verhalten des Aufrufs

        time pipeline

        ist unterschiedlich. So werden bei der Korn-Shell die Kommandos der
        Pipeline ausgeführt und anschließend in einer Statistik die ver-
        strichene Zeit, die Benutzer- und die Systemzeit für diese Komman-
        dos auf die Standardfehlerausgabe ausgegeben.

        Bei der XPG4-Shell wird time nur für das 1. Kommando der Pipeline
        ausgeführt und die Statistik schon vorher ausgegeben.





Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

xpg4_sh(1)                                                       xpg4_sh(1)

        So führt ein Aufruf

        time ls | pg

        bei der Korn-Shell dazu, daß man zunächst die Ausgabe von ls sieht
        und die Eingabe von pg durchführen muß. Erst wenn alles beendet
        ist, wird die Statistik für ls und pg ausgegeben.

        Bei der XPG4-Shell wird zuerst die Statistik ausgegeben, und dann
        folgen die Ausgaben von ls sowie die Eingaben für pg.

     3. Bei der Korn-Shell wird eine Fehlermeldung ausgegeben, wenn das
        echo-Kommando beim Schreiben in eine Datei nicht schreiben kann,
        weil die Platte voll ist. Der Endestatus ist dann 1. Die XPG4-Shell
        ignoriert diesen Fehler.

     4. Die Korn-Shell verliert bei dem folgenden getopts-Kommando keinen
        Parameter, wenn das Shell-Skript z. B. mit -l abc aufgerufen wird.
        Die XPG4-Shell gibt beim 2. Aufruf echo $* nur noch -l aus anstatt
        -l abc:

        #!/sbin/ksh
        set -x
        echo $*

        while getopts :l:u:t: arguments
        do
          case $arguments in
             l) ;;
             u) ;;
             t) ;;
             *) echo "wrong option \n"
             exit 1
             ;;
          esac

        done
        echo $*

     5. Wird bei einer Readonly-Variablen (typeset -r) versucht, den Wert
        zu verändern, so liefern Korn-Shell und XPG4-Shell die Fehlermel-
        dung " ...: is read only".

        Der Unterschied sieht so aus, daß bei der XPG4-Shell die Fehlermel-
        dung bewußt etwas später erzeugt wird.

     6. Die Korn-Shell liefert bei einer Funktion in einem Shell-Skript in
        $0 den Funktionsnamen, die XPG4-Shell liefert auch dort den Namen
        des Shell-Skripts.





Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

xpg4_sh(1)                                                       xpg4_sh(1)

        Beispielsweise in folgendem Shell-Skript mit Namen test.sh:

        typeset -fux dummy
        function dummy
        {
            echo $0
        }

        dummy

        Die Korn-Shell echot dummy, die XPG4-Shell echot test.sh.

SIEHE AUCH
     ksh(1), sh(1).








































Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026