Bash

23. 4. 1999on-line novΘ okno dom∙ p°edchozφ Φlßnek nßsledujφcφ Φlßnek

... 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


Krom∞ t∞chto prom∞nn²ch lze ale v souboru ~/.bashrc i mapovat funkce na r∙znΘ klßvesy. Bu∩ m∙╛ete klßvese p°i°adit n∞kterou zabudovanou funkci nebo v²pis libovolnΘho °et∞zce. Op∞t n∞kolik p°φklad∙:

# 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 "


Kompletnφ seznam v╣ech p°eddefinovan²ch funkcφ i prom∞nn²ch pro soubor ~/.inputrc naleznete v manußlovΘ strßnce Bashe v sekci READLINE.

Tak, to by bylo pro zaΦßtek asi v╣e. N∞kdy p°φ╣t∞ se podφvßme na zßklady skriptovßnφ v Bashi.

Autor: Michal Krause (jinΘ Φlßnky tohoto autora)
Sekce: Praxe


on-line novΘ okno dom∙ p°edchozφ Φlßnek nßsledujφcφ Φlßnek