Unix-skall
From Wikipedia, the free encyclopedia
Et skall (engelsk: shell) er en fellesbetegnelse på kommando-tolker i en rekke operativsystemer. Et effektivt, tekstorientert grensesnitt mellom operativsystemet og brukeren, typisk med mulighet for å utføre 'kommandofiler', tekstfiler som inneholder kommandoer. Begrepet stammer opprinnelig fra Unix, og Unix' opprinnelige skall, sh ('Bourne Shell', 1977[1]) ble rollemodell for all senere utvikling av kommando-tolker. Ikke minst det faktum at Unix-skallet er et vanlig brukerprogram, ble trendsettende. Brukere kan velge mellom ulike skall, og utvikle sine egne – uten spesielle privilegier.
Frikoblingen mellom system og kommando-tolk førte til at det over tid ble utviklet en rekke skall for Unix- og Unix-lignende operativsystemer. Det opprinnelige skallet ble utviklet av Stephen R. Bourne (sh, bsh), og er over tid erstattet av nyere og mer funksjonsrike varianter som Korn Shell (ksh), zsh, C-shell (csh), T-shell (tcsh) og «Bourne-again-shell» (bash). Sistnevnte er mest utbredt i dag, men de fleste Unix- og Unix-lignende systemer inkluderer en håndfull ulike skall.
Et skall er både kommando-tolk og programmeringsspråk (ofte kalt skriptspråk). Muligheten for å bruke kommando-tolken til programmering har vært essensiell for automatisering og drift av Unix-systemer siden 1970-tallet. Programmene kan inneholde kontrollstrukturer, variabler og funksjonalitet som gjør det mulig å lage strukturerte programmer som kombinerer flere verktøy og programmer.
Programmeringsmuligheter og syntaks varierer betydelig mellom ulike Unix-skall, og har i årenes løp gitt opphav til kompatibilitetsproblemer mellom ulike systemer og generasjoner. Å etablere en standard for skall-programmering ble derfor en viktig del av standardiseringsprosessen for Unix på slutten av 1980- og begynnelsen av 1990-tallet. POSIX.2 (1992) definerer egenskaper og syntaks for et Unix-skall, og er basert på den tidens mest utbredte skall, ksh88.[2]
Skall-standarden ble en del av Single Unix Specification, og er senere blitt tilgjengelig som IEEE standard 1003.1. Standarden vedlikeholdes av både IEEE Computer Society og The Open Group.