Skåne Sjælland Linux User Group - http://www.sslug.dk Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg
 



POSIX shell og Bash


Frank Damgaard



Hvorfor man bør lave shellscripts så de følger POSIX

POSIX standarden kan købes i bogform, desværre er den ikke tilgængelig på internet.

Definition af shell og kommandoer findes i POSIX 1003.2, the Shell and Tools Standard (IEEE).










Hvorfor bekymre sig om POSIX når man laver scripts?


Shell-scripts til eget brug, eller begrænset til lokale maskiner behøver ikke være portable


Skal man kunne bruge shell-scripts på andre installationer, og specielt på andre platforme end GNU/linux, så kan man ikke forvente at bash, tcsh eller en anden yndlingsshell er installeret.


Scripts der tager hensyn til anvendte OS, shell mv.
er komplicerede at lave og vedligeholde.
(ligesom support af forskellige browsere i HTML, i stedet for at bruge standarderne)









Generelle tips om shell portabilitet.







Eksterne programmer

Udover de indbyggede kommandoer i en shell, så skal man huske at være varsom med at bruge eksterne programmer fra scripts.

Der er ofte større eller mindre forskelle!

Programmerne kan have:

Dette gælder specielt mellem forskellige UNIX-systemer,
normalt ikke mellem forskellige linux distributioner.

Eksempler:







Indbyggede kommandoer

    Compound commands
            case       else       function   then    !
            do         esac       if         time    [[
            done       fi         in         until   {
            elif       for        select     while   }

    POSIX special commands
            .          continue   exit       return     trap
            :          eval       export     set        unset
            break      exec       readonly   shift
 
    POSIX regular commands
            alias      command    fg         kill       umask
            bg         false      getopts    read       unalias
            cd         fc         jobs       true       wait






POSIX i BASH

Fra FAQ: "Bash is a Unix command interpreter (shell). It is an implementation of the Posix 1003.2 shell standard, and resembles the Korn and System V shells."

Men Bash har en del non-standard udvidelser :-(
Nu sidder de færreste af os POSIX bogen og kontrollerer egne scripts, og det kan være svært at huske alle detaljerne.

Den nemmeste måde at undgå at basere sig for meget på Bash-
udvidelser er ved at udvikle sine scripts i Bash POSIX mode.

POSIX opførsel kan fås ved:







Under programmering af scripts








Hvor findes mere information

I referencemanualen til Bash er der et specielt afsnit om Bash POSIX mode.

Maualen eller evt. filen POSIX.NOTES er gerne installeret under /usr/doc/bash eller /usr/doc/packages/bash/

Portable Shell Programming :
http://www.fsf.org/manual/autoconf-2.52/html_node/autoconf_104.html#SEC104
Limitations of Usual Tools :
http://www.fsf.org/manual/autoconf-2.52/html_node/autoconf_113.html

Writing Portable Bourne Shell : http://www.cs.huji.ac.il/support/docs/autobook/autobook_209.html#SEC209
http://sources.redhat.com/autobook/autobook/autobook_208.html#SEC208

Choosing a Shell for Portable Unix Scripts:
http://www.raycosoft.com/rayco/support/porting.html



Relateret materiale på SSLUG:

 
Forside   Tilmelding   Postarkiv   Oversigt   Kalender   Søg

 
 
Henvendelse vedrørende websiderne til <www_admin>. Senest ændret Sunday, 07-Mar-2004 21:27:26 CET
Denne side vedligeholdes af Frank Damgaard .