|
|||||||||||||||
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).
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)
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:
dfpsdu (blok kan være 1K , 512byte,....)ls
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
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:
#!/bin/shbash --posixset -o posixpdksh eller
ashcat, cmp, cp, diff, echo, egrep, expr, false, grep,
ln, ls, mkdir, mv, pwd, rm, rmdir, sed, sleep, sort, tar, test, touch
and true.gawk --posix vil
slå diverse Gnu Awk udvidelser fra.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:
|
||||||||||||||
|
||||||||||||||