23. 4. 1999 |
... aneb Bourne-Again SHell je jeden z nejoblφben∞j╣φch shell∙. Vyskytuje se snad ve v╣ech distribucφch a navφc je obvykle pou╛φvßn jako v²chozφ pro v╣echny u╛ivatele. Poj∩me se te∩ podφvat, jak si ho p°izp∙sobit obrazu svΘmu.
Nejd°φve si °ekn∞me, co se vlastn∞ d∞je, kdy╛ se Bash spou╣tφ, nap°φklad po p°ihlß╣enφ do systΘmu. Vzhledem k tomu, ╛e shell m∙╛e b²t spu╣t∞n n∞kolika r∙zn²mi zp∙soby, existuje i n∞kolik odli╣n²ch ·vodnφch sekvencφ.
Prvnφ z nich je urΦena pro tzv. login shell, co╛ v praxi nap°φklad odpovφdß situaci po p°ihlß╣enφ do systΘmu. V tomto p°φpad∞ se nejd°φve vykonß soubor /etc/profile a potΘ z trojice soubor∙ ~/.bash_profile, ~/.bash_login nebo ~/.profile prvnφ existujφcφ (hledßno v uvedenΘm po°adφ). P°i ukonΦenφ shellu (odhlß╣enφ) je vykonßn soubor ~/.bash_logout, pokud tento existuje.
Druhou mo╛nou situacφ je tzv. interaktivnφ nep°ihla╣ovacφ shell (pon∞kud neum∞l² p°eklad anglickΘho interactive non¡login shell). Interaktivitou shellu je mφn∞n stav, kdy je jeho standardnφ vstup i v²stup p°ipojen k terminßlu, ale nejde o p°ihla╣ovacφ shell. Typickß situace je nap°φklad otev°enφ novΘho okna xtermu. V takov²ch p°φpadech je vykonßn pouze soubor ~/.bashrc, pokud existuje.
Poslednφ mo╛nostφ je neinteraktivnφ shell, kter² nevykonßvß ╛ßdn² z uveden²ch soubor∙.
V²╣e popsanΘ chovßnφ m∙╛e b²t pon∞kud odli╣nΘ v zßvislosti na parametrech, se kter²mi je Bash spou╣t∞n. Rovn∞╛ se m∞nφ volßnφ jednotliv²ch soubor∙, pokud je Bash spu╣t∞n jako sh. V tom p°φpad∞ se Bash chovß opravdu jako sh a vykonß pouze soubory /etc/profile a ~/.profile.
V╣echny uvedenΘ soubory mohou slou╛it k nastavovßnφ prom∞nn²ch prost°edφ, alias∙, provßd∞nφ inicializaΦnφch akcφ apod. Soubory nemajφ ╛ßdn² specißlnφ formßt, jde o obyΦejnΘ shell skripty.
Jednou z nejzajφmav∞j╣φch funkcφ Bashe je mo╛nost definovat aliasy, co╛ nenφ nic jinΘho, ne╛ vytvo°enφ dvojice alias¡povel. Zavolßnφm aliasu se pak vykonß povel, co╛ m∙╛e znaΦn∞ zp°φjemnit prßci. K tomu slou╛φ obvykle soubor ~/.bashrc. Alias se definuje nap°φklad takto:
alias pavuk='pavuk -X -gui_font -biznet-aplos-medium-r-*-*-*-*-*-*-*-*-iso8859-2'
Tento °ßdek mi zajistφ, ╛e se program pavuk spustφ rovnou do interaktivnφho prost°edφ s p°ednastaven²m Φesk²m fontem. Jist∞ uznßte, ╛e to u╣et°φ docela dost ·hoz∙ na klßvesnici.
Aliasy majφ p°ednost p°ed programy v cest∞ (PATH), tak╛e jsem si mohl dovolit pou╛φt alias pavuk, p°esto╛e spustiteln² soubor stejnΘho jmΘna ji╛ v cest∞ existuje.
Krom∞ v²╣e uveden²ch soubor∙ existuje je╣t∞ jeden, nemΘn∞ d∙le╛it². Jde o soubor ~/.inputrc, kter² slou╛φ ke konfiguraci vstupu a v²stupu. S nφm ji╛ lze provozovat tu pravou shellovou magii.
V ~/.inputrc m∙╛ete definovat n∞kolik zßkladnφch prom∞nn²ch, kterΘ urΦujφ chovßnφ shellu ¡ nap°φklad zde lze povolit Φi zakßzat vstup a v²stup osmibitov²ch znak∙ (d∙le╛itΘ p°i lokalizaci), nastavit zda se majφ dlouhΘ °ßdky zalamovat nebo scrollovat a podobn∞. Jako p°φklad uvedu sprßvnΘ nastavenφ pro vstup a v²stup Φesk²ch znak∙:
set meta-flag on set convert-meta off set output-meta on set input-meta on "e[1~": beginning-of-line "e[3~": backward-delete-char "e[4~": end-of-line
# Mapuje na klßvesu Ctrl+T dop°ednΘ prohledßvßnφ historie, opak Ctrl+R "C-t": forward-search-history # Nastavφ mazßnφ celΘ °ßdky na klßvesu Ctrl+Meta+K "C¡M¡k": kill-whole-line # Zajistφ, ╛e po stisku klßvesy Ctrl+F se na °ßdku vlo╛φ mustr pro povel find "C-f": "find . -iname "
Autor: Michal Krause (jinΘ Φlßnky tohoto autora)
Sekce: Praxe