2  Eri shelleistä ja standardeista

Erilaisia shellejä on Unix-maailmassa lukuisia, ja shell-ohjelmien eli skriptien pahin ongelma onkin heikko siirrettävyys.

Jonkinlaisena yhteisenä tekijänä voidaan pitää POSIXin (Portable Operating System Interface -komitea) vuonna 1992 hyväksyttyä standardia (IEEE 1003.2, yleisesti tunnettu nimellä POSIX.2; jatkossa ``POSIX-yhteensopiva'' tarkoittaa ko. standardin mukaista): Jokseenkin jokaisesta modernista Unixintapaisesta (ja aika monesta muustakin) käyttöjärjestelmästä löytyy jokin ainakin melkein POSIX-yhteensopiva shell. Samassa standardissa määriteltiin myös yleisten työkaluohjelmien ominaisuudet, ja niidenkin osalta useimmat Unixit alkavat olla aika standardinmukaisia, joskin eroja vielä löytyy. Toisaalta POSIX-yhteensopivia shellejä yms saa myös moniin hyvinkin vähän Unixmaisiin käyttöjärjestelmiin eri MS-Windowseista alkaen.

POSIXin shell-standardi pohjautuu lähinnä Bourne ja Korn shelleihin, ennen kaikkea jälkimmäisen versioon ksh88. Mitään ``puhdasta POSIX-shelliä'' ei sinänsä ole olemassa, esim. HP-UX:n ``POSIX sh'' sisältää joukon ksh88:n piirteitä jotka POSIX jätti standardista pois.

Ehkä tärkein POSIX-tyyppinen shell nykyisin onkin juuri Korn shell eri versioineen, etenkin ksh88, joka on nykyisin vakiona lähes kaikissa kaupallisissa Unixeissa (uudempi ksh93 on harvinaisempi, vaikka se onkin ilmaiseksi saatavissa ei-kaupalliseen käyttöön); toinen erityismaininnan arvoinen on Gnu-projektin tuottama bash, jota etenkin Linux on levittänyt tehokkaasti.

Eri ympäristöissä POSIX-yhteensopivimpia shellejä ovat: HP-UX:ssä (versiosta 10 alkaen) /usr/bin/sh, SunOS:ssä /usr/bin/ksh, Linuxissa /bin/ksh tai sen puuttuessa /bin/zsh tai /bin/bash. (Erityisesti SunOS:ssä /bin/sh ei ole POSIX-yhteensopiva vaan klassinen Bourne sh. Muualla yleensä /bin/sh on linkki johonkin sopivaan shelliin.)

Olemassa on myös iso joukko shellejä, jotka eivät yritäkään olla POSIX-yhteensopivia, erityisesti C-shell (csh) variantteineen (kuten tcsh). Tällä kurssilla niihin ei juuri kajota, vaan keskitytään Bourne-tyyppisiin shelleihin ja erityisesti POSIXin standardoimiin piirteisiin; lisäksi lähinnä ksh88:n ja bashin tärkeimpiä lisäominaisuuksia käsitellään jonkin verran.

Samoin työkaluohjelmista käytetään ensisijaisesti POSIX-versioita, mutta siirrettävyyden kannalta tärkeimpiä eroja etenkin BSD:n (Berkeley Standard Distribution) versioihin otetaan myös esille.

(Mainittakoon erityisesti että SunOS:n /bin/awk ei ole POSIX-yhteensopiva, sen sijaan siellä on /usr/xpg4/bin/awk joka on sama kuin /usr/bin/nawk ja se on ainakin suunnilleen POSIXin mukainen.)

Seuraava: 3. Mitä shell yleensä tekee?
Edellinen: 1. Johdanto


File translated from TEX by TTH, version 1.98.
On 17 May 2001, 18:13.