Anketa

Ktorý návod by ste cheli ako ďalší?:

Partenské projekty

FreeBSD - Systémové rozhrania shell

Verzia pre tlačSend by emailPDF verzia

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 zshbash) 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 abrakadabraabraka.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 tcshcsh, sa používa na nastavenie premenných prostredia setenv. V Bourne shelloch ako napríklad shbash 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.

Zmena rozhrania shell

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/shells

a potom spustiť chsh.