Linux – Friheden til at programmere: Version 2.5.20050330 – 2020-12-31 | ||
---|---|---|
forrige | Kapitel 2. Vælg et sprog | næste |
Bourne shell er den oprindelige unixshell som på alle unixsystemer er installeret som /bin/sh, som i dag er defineret af Single Unix Specification version 3 (SUSv3, tidligere POSIX).
Der er flere forskellige shells der implementerer bourne shell. På linuxmaskiner vil /bin/sh sædvanligvis være et link til bash (Bourne Again Shell) der når den bliver kaldt som sh køre i en speciel kompatibilitetsmode. Men også ksh (Korn Shell) og zsh implementerer bourne shell, dog med hver deres små udvidelser.
Shellscripts bliver for det meste brugt til at binde andre programmer sammen med. Ud over Bourne shell findes også chs og batch-filer i MS-DOS er egentlig også shellscripts.
De to hovedfordele ved at bruge Bourne shell er:
At programmer skrevet i Bourne shell umiddelbart kan køres på alle systemer der overholder SUSv3-standarden.
At Bourne shell som kommandofortolkersprog er velegnet til at binde større programmer sammen, så de løser en bestemt opgave.
Medmindre man har meget gode grunde til det, bør man ikke skrive programmer der skal deles med andre, i andre kommandofortolkersprog end Bourne shell. Andre kommandofortolkersprog giver i nogle tilfælde mulighed for at løse opgaver en smule mere elegant, men det er sjældent at det opvejer fordelen ved at det er Bourne shell man kan regne med findes på stort set alle styresystemer. Den primære eksistensberettigelse for bash, ksh og zsh er dog i deres egenskaber ved interaktiv brug, hvilket er uden for denne bogs emner.
De egenskaber der gør sproget nyttigt er:
Andre kommandoer indgår naturligt som en integreret del af sproget (grep, sort, cat, ...)
Pipes og redirection gør det let at tage uddata fra kommandoer og føre dem videre over i andre kommandoer eller gemme dem i filer.
Bourne shell er så integreret i Unix at sproget bliver gennemgået som et selvstændigt afsnit i Friheden til at lære Unix.
Bourne scripts gemmes normalt i filer. Disse skal så som første linje hedde #! /bin/sh. Følgende er et eksempel på et script
#! /bin/sh while read p; do echo p if [ -z "$p" ] ; then exit 0 fi done
Bourne scirpts kan også skrives direkte på komandolinjen:
[tyge@hven ~]$ for i in foo bar baz; do echo $i; done foo bar baz [tyge@hven ~]$