FreeBSDs tehakse palju igapäevast tööd käsurea kasutajaliideselt, mida nimetatakse shelliks. Shelli peamiseks ülesandeks on võtta kasutajalt vastu käskusid ja neid käivitada. Paljudel shellidel on ka sisseehitatud funktsioonid, mis lihtsustavad igapäevaseid ülesandeid, nagu näiteks failide haldamine, käsurealt redigeerimine, käsu makrod ja keskkonnamuutujad. FreeBSDga on kaasas mitmeid shelle, nagu näiteks sh ( Bourne Shell ) ja tcsh ( edasiarendatud C-shell ). FreeBSD portsude kollektsioonis on saadaval veel palju teisigi shelle, millel on palju rohkem võimalusi, nagu näiteks zsh ja bash.
Millist shelli kasutada? See on tegelikult maitseasi. Kui sa oled C programmeerija, võid ennast tunda mugavamalt C stiilis shellis nagu tcsh. Kui sa tuled Linuxist või pole varem UNIX®i stiilis käsurealiidesega kokku puutunud, siis tahad sa arvatavasti kasutada bash-shelli. Mõte on selles, et igal shellil on oma unikaalsed omadused, mis võivad sinu eelistatud töökeskkonnas töötada või ka mitte ja see, millist neist kasutada, on su enda otsustada.
Üks tavaline shelli omadus on failinimede lõpetamine. Olles sisestanud mõned esimesed tähed käsust või failinimest, võid sa enamasti lasta shellil ise ülejäänu sinu eest ära lõpetada, vajutades selleks TAB-klahvi. Siin on ka näide. Oletame, et sul on kaks faili nimedega foobar ja foo.bar. Sa tahad kustutada faili foo.bar. Seega sisestaksid sa klaviatuurilt: rm fo[TAB].[TAB].
Shell väljastaks rm foo[BEEP].bar.
[BEEP] on konsooli alarm, millega shell annab sulle teada, et ta ei saanud failinime täielikult lõpetada, kuna oli rohkem kui üks kattuvus. Nii foobar kui ka foo.bar algavad tähtedega foo. Seega sai shell nime ainult sinnamaani lõpetada. Kui sa nüüd sisestad . ja vajutad uuesti TABi, siis on shell võimeline failinime sinu eest täielikult lõpetama.
Teine oluline shelli funktsioon on keskkonnamuutujad. Keskkonnamuutujad on muutuja-väärtuse paarid, mida hoitakse shelli keskkonnas. Nendele muutujatele saavad ligi kõik shelli poolt käivitatud programmid ja seetõttu hoitakse seal ka palju programmide seadeid. Siin on nimekiri tavalistest keskkonnamuutujatest ja nende tähendustest:
| Muutuja | Kirjeldus |
|---|---|
| USER | Kasutajanimi, millega sisse logisite. |
| PATH | Koolonitega eraldatud nimekiri kataloogidest, kust tuleks binaarfaile otsida. |
| DISPLAY | X11 ekraani, millega võimaluse korral ühenduda, võrgunimi. |
| SHELL | Kasutuses olev shell. |
| TERM | Kasutaja terminali nimi. Kasutatakse, et saada teada, millised on antud terminali võimalused. |
| TERMCAP | Andmebaasi kirje terminali paojadadest, mille abil saab kasutada mitmeid terminali funktsioone. |
| OSTYPE | Operatsioonisüsteemi tüüp. Näiteks FreeBSD. |
| MACHTYPE | Protsessori arhitektuur, millel masin töötab. |
| EDITOR | Kasutaja poolt eelistatav tekstiredaktor. |
| PAGER | Kasutaja poolt eelistatav "tekstipager". |
| MANPATH | Koolonitega eraldatud nimekiri kataloogidest, kust otsida manuaale. |
Käsud, millega keskkonnamuutujaid vaadelda ja sättida saab, on erinevatel shellidel erinevad. C stiilis shellides nagu näiteks tcsh ja csh peaksid sa keskkonnamuutujate vaatamiseks ja seadmiseks kasutama käsku setenv. Bourne'i shellides nagu näiteks sh ja bash peaksid sa kasutama muutujate vaatamiseks ja sättimiseks käsku export. Näiteks, et muutuja EDITOR väärtust csh või tcsh shellides muuta /usr/local/bin/emacs peale, tuleks kasutada järgnevat käsku:
% setenv EDITOR /usr/local/bin/emacs
Bourne'i shellides:
% export EDITOR="/usr/local/bin/emacs"
Enamik shelle lubavad ka muutuja senisele väärtusele lisada, kui panete käsureal selle ette märgi $. Näiteks echo $TERM väljastaks $TERM muutuja väärtuse, kuna shell asendab $TERM'i selle muutuja väärtusega enne, kui ta selle edasi echo'le saadab.
Shellid käsitlevad paljusid erilisi tähemärke, mida nimetatakse meta-märkideks, eriliste infoesitusviisina. Kõige levinum on märk *, mis tähistab suvalist arvu tähemärke failinimes. Neid erilisi meta-märke saab kasutada failinimede lõpetamiseks. Näiteks käsu echo * sisestamine annab peaaegu sama tulemuse kui käsu ls kasutamine, kuna shell võtab kõik failid, mis vastavad kriteeriumile *, ja paneb need echo'le argumendiks kaasa.
Kui te soovite, et shell ei interpreteeriks neid meta-märke, siis peaksite nende varjestamiseks panema nende ette tagurpidi kaldkriipsu (\). Näiteks käsk echo $TERM väljastab ekraanile väärtuse, mis on muutujal TERM, aga echo \$TERM väljastab ekraanile lihtsalt sõna $TERM.
Kõige lihtsam on oma shelli muuta käsu chsh abil. chsh käivitab tekstiredaktori, mis on määratud keskkonnamuutuja EDITOR poolt; kui sellist keskkonnamuutujat ei ole, siis käivitatakse vi. Muuda seal rida ``Shell:'' vastavalt oma soovile.
Sa võid chsh'ile argumendiks anda võtme
-s; see muudab shelli ära sinu
eest, ilma et oleks vaja redaktorit kasutada.
Näiteks, kui sa tahad muuta shelli bashiks, siis peaks
selleks sobima järgnev käsk:
% chsh -s /usr/local/bin/bash
Samas peaks töötama ka chsh kasutamine ilma argumentideta ja seega tekstiredaktori kaudu muudatuse tegemine.
Note: Shell, mida sa kasutada tahad, peab kindlasti olema failis /etc/shells. Kui sa paigaldasid shelli portsude kollektsioonist, siis peaks see olema juba sinu eest ära tehtud. Kui aga paigaldasid shelli käsitsi, pead ka seda ise tegema.
Näiteks kui sa paigaldasid bash'i käsitsi ja panid ta kataloogi /usr/local/bin, siis peaksid sa tegema järgnevat:
# echo "/usr/local/bin/bash" >> /etc/shellsJa siis käivita uuesti chsh.