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 nonlogin 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 aliaspovel. 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 ~/.inputrc 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 "CMk": 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.