V systéme FreeBSD sa mnoho každodennej práce vykoná v príkazovom riadku systémového rozhrania, ktoré nazývame shell. Hlavnou úlohou shellu je prevziať príkazy zo vstupu a vykonať ich. Do mnohých shellov sú zabudované funkcie, ktoré pomáhajú riešiť každodenné úlohy ako napríklad správa súborov, filtrovanie názvov súborov podľa masiek, editovanie v príkazovom riadku, makrá príkazov a premenné prostredia. Systém FreeBSD obsahuje niekoľko shellov, ako napríklad sh (Bourne Shell) a tcsh (vylepšený C-shell). Mnoho ďalších shellov (ako napríklad zsh a bash) je dostupných prostredníctvom kolekcie portov FreeBSD.
Ktorý shell je vhodné použiť? To je naozaj iba otázkou vkusu. Ak sme programátori v jazyku C budú sa nám asi viac páčiť shell rozhrania podobne jazyku C ako napríklad tcsh. Ak sme zvyknutí na operačný systém Linux alebo vôbec nepoznáme príkazový riadok systému UNIX®, môžeme skúsiť bash. Dôležité je, že každý shell má jedinečné vlastnosti, ktoré nemusia vyhovovať uprednostňovanému pracovnému prostrediu, a preto máme možnosť vybrať si shell, ktorý chceme.
Jednou zo spoločných vlastností shellov je doplňovanie názvov súborov. Stačí napísať niekoľko prvých písmen z názvu príkazu alebo súboru a zvyšok nám zvyčajne doplní automaticky shell po stlačení klávesu Tab na klávesnici. Tu je príklad. Predpokladajme, že máme dva súbory s názvami abrakadabra a abraka.dabra a chceme zmazať súbor abraka.dabra. Na klávesnici stačí zadať: rm ab[Tab].[Tab].
Shell by mal vytvoriť výstup rm abraka[BEEP].dabra.
[BEEP] predstavuje pípnutie konzoly, ktoré nám oznámi, že nie je možné príkaz doplniť úplne, pretože existuje viac ako jedna možnosť. Oba súbory abrakadabra aj abraka.dabra začínajú písmenami ab, preto je možné doplniť názov iba po abraka. Ak napíšeme ., a za ňou znova stlačíme kláves Tab, shell je schopný doplniť zvyšok názvu.
Ďalšou funkciou shellu je používanie premenných prostredia. Premenné prostredia sú dvojice premenná/hodnota uložené v priestore pre prostredie. Tento priestor môžu čítať všetky programy spustené v shell rozhraní, a preto obsahujú konfiguračné parametre pre veľa programov. Tu je zoznam najčastejšie používaných premenných prostredia spolu s ich významom:
| Premenná | Popis |
|---|---|
| USER | Používateľské meno práve prihláseného používateľa. |
| PATH | Dvojbodkami oddelený zoznam adresárov, v ktorých sa hľadajú spustiteľné súbory. |
| DISPLAY | Sieťová adresa displeja X11, ku ktorému sa dá pripojiť, ak je dostupný. |
| SHELL | Aktuálny shell. |
| TERM | Názov typu terminálu používateľa. Používa sa na zistenie možností terminálu. |
| TERMCAP | Databáza kódov únikových sekvencií pre rôzne funkcie terminálu. |
| OSTYPE | Typ operačného systému. napr., FreeBSD. |
| MACHTYPE | Architektúra procesora počítača. |
| EDITOR | Uprednostňovaný editor používateľa. |
| PAGER | Uprednostňovaný zobrazovač používateľa. |
| MANPATH | Dvojbodkami oddelený zoznam adresárov, v ktorých sa hľadajú manuálové stránky. |
Nastavovanie premenných prostredia sa v každom shelli robí inak. Napríklad v shelloch podobných C jazyku ako napríklad tcsh a csh, sa používa na nastavenie premenných prostredia setenv. V Bourne shelloch ako napríklad sh a bash sa na nastavovanie premenných prostredia používa príkaz export. Napríklad ak chceme nastaviť premennú prostredia EDITOR na hodnotu /usr/local/bin/emacs, v shelloch csh alebo tcsh použijeme tento príkaz:
setenv EDITOR /usr/local/bin/emacs
V shelloch Bourne zasa tento príkaz:
export EDITOR="/usr/local/bin/emacs"
Väčšina shellov v príkazovom riadku tiež pridáva na začiatok názvov premenných znak $ . Napríklad echo $TERM vypíše obsah premennej $TERM, pretože shell načíta obsah premennej $TERM a predá ho príkazu echo.
Shell spracováva mnoho špeciálnych znakov, ktoré nazývame metaznaky, pretože sú špeciálnou reprezentáciou údajov. Najčastejšie používaný metaznak je *, ktorý reprezentuje ľubovoľný počet znakov v názve súboru. Tieto špeciálne metaznaky je možné použiť na filtrovanie súborov podľa masky (globbing). Napríklad príkaz echo * urobí to isté ako ls, pretože shell vezme všetky súbory, ktoré zodpovedajú znaku * a umiestni ich do príkazového riadka a príkaz echo ich vypíše.
Ak chceme zabrániť, aby shell nespracovával špeciálne znaky, môžeme pred ne napísať spätnú lomku (\). Príkaz echo $TERM vypíše hodnotu premennej ale príkaz echo \$TERM vypíše $TERM ako slovo.
Najjednoduchší spôsob, akým sa dá zmeniž shell je použitie príkazu chsh. Spustený chsh nás presunie do editora, ktorý je nastavený v premennej prostredia EDITOR (ak nie je nastavená, použije sa editor vi). Tu môžeme zmeniť riadok “Shell:” podľa potreby.
Spolu s príkazom chsh môžeme použiť aj voľbu -s, ktorá za nás nastaví shell bez toho, aby sa otváral editor. Ak napríklad chceme zmeniť shell na bash, použijeme nasledujúci príkaz:
chsh -s /usr/local/bin/bash
Poznámka: Shell, ktorý chceme použiť, musí byť nastavený v súbore /etc/shells. Ak sme nainštalovali shell z kolekcie portov, potom by to už malo byť nastavené. Ak sme inštalovali shell ručne, potom je to potrebné urobiť.
Ak napríklad nainštalujeme bash ručne a umiestnime ho do /usr/local/bin, bude potrebné zadať:
echo "/usr/local/bin/bash" >> /etc/shellsa potom spustiť chsh.