Unix-opas, luku 5 Muita toimintoja ja sovelluksia Unix-koneissa:

Komentotulkki (shell), komennot ja ohjelmat

Kun käyttäjä on ottanut yhteyden Unix-koneeseen, ollaan ns. komentotilassa, jonka merkkinä on kehote ja jossa käyttäjän kirjoittamat rivit käsittelee komentotulkki eli shell. Komentotulkki voi käynnistää eri ohjelmia sen mukaan, mitä käyttäjä komennoilla käskee.

Unix-koneissa on käytettävissä useita erilaisia komentotulkkeja. Vanhin, eräänlainen perus-shell on Bourne shell, tiedostonimeltään sh. Tämän oppaan kirjoittaja suosii T-shelliä tcsh, joka kuuluu C-shellien perheeseen. Oletusarvoisesti eli jos et ole erikseen toisin pyytänyt tai itse järjestänyt, käytössäsi on T-shell. Sen hienouksiin kuuluu mm. mukava mahdollisuus käyttää hyväksi aiemmin annettuja komentoja nuolinäppäimillä sekä ns. tiedostonnimien tunnistus tabulaattorilla.

Komentotulkin voi mahdollisesti vaihtaa komennolla chsh; tämä riippuu paikallisista järjestelyistä. Sallitut komentotulkit näkee tiedostosta /etc/shells. Muutos tulee voimaan seuraavan yhteydenoton alusta ja on pysyvä (kunnes se erikseen muutetaan). Jos tarvitset vain tilapäisesti jonkin muun shellin kuin vakioshellisi piirteitä, voit käynnistää shellin toisen "alla" (aliprosessina); tämä onnistuu suoraan shellin nimellä (esim. zsh).

Komentotulkkia voi pyytää käynnistämään sekä itsenäisesti toimivia ohjelmia kuten Pine että yksinkertaisia ja lyhyitä ohjelmia, joilla ei ole omia sisäisiä käskyjä. Näitä lyhyitä ohjelmia kutsutaan joskus komennoiksi, joskus ohjelmiksi, mikä voi olla hämäävää. Tavallisimmin puhutaan esim. ls- tai cp-komennosta, mutta itse asiassa ne ovat ohjelmia, jotka komentotulkki käynnistää erilliseen prosessiin. Prosessi tarkoittaa lyhyesti sanottuna ohjelman suoritusta. Sen lisäksi, että komentotulkki käynnistelee prosesseja, prosessit voivat luoda uusia prosesseja. Jokin ohjelma voi esim. automaattisesti käynnistää jonkin editorin; esimerkiksi Pine käynnistää Pico-editorin meilin kirjoittamista varten.

Komentoja sanan varsinaisessa merkityksessä, siis sellaisia, jotka komentotulkki itse suorittaa, on Unixissa varsin vähän. Esimerkkinä sellaisista mainittakoon setenv. Varsinaisista komennoista ei saa ohjeita man-komennolla, vaan niiden ohjeet sisältyvät asianomaisen komentotulkin ohjeisiin; esimerkiksi setenv-komennon kuvaus löytyy siitä varsin laajasta dokumentista, jonka saa komennolla man tcsh.

Komennolla which voi selvittää, onko jokin komento komentotulkin "sisäänrakennettu" komento vai ohjelma. Esimerkki:

epsilon ~ 51 % which rm
/bin/rm
epsilon ~ 52 % which ps
/bin/ps
epsilon ~ 53 % which jobs
jobs: shell built-in command.
epsilon ~ 54 % which which
which: shell built-in command.
epsilon ~ 55 %