Hlavní navigace

Bash

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

Našli jste v článku chybu?
Podnikatel.cz: Přehledná titulka, průvodci, responzivita

Přehledná titulka, průvodci, responzivita

Root.cz: Telegram spustil anonymní blog Telegraph

Telegram spustil anonymní blog Telegraph

Lupa.cz: Kdo pochopí vtip, může jít do ČT vyvíjet weby

Kdo pochopí vtip, může jít do ČT vyvíjet weby

Podnikatel.cz: EET: Totálně nezvládli metodologii projektu

EET: Totálně nezvládli metodologii projektu

DigiZone.cz: Recenze Westworld: zavraždit a...

Recenze Westworld: zavraždit a...

Vitalia.cz: I církev dnes vyrábí potraviny

I církev dnes vyrábí potraviny

Měšec.cz: U levneELEKTRO.cz už reklamaci nevyřídíte

U levneELEKTRO.cz už reklamaci nevyřídíte

Vitalia.cz: To není kašel! Správná diagnóza zachrání život

To není kašel! Správná diagnóza zachrání život

Vitalia.cz: Paštiky plné masa ho zatím neuživí

Paštiky plné masa ho zatím neuživí

Podnikatel.cz: 1. den EET? Problémy s pokladnami

1. den EET? Problémy s pokladnami

Měšec.cz: Jak vymáhat výživné zadarmo?

Jak vymáhat výživné zadarmo?

Vitalia.cz: Spor o mortadelu: podle Lidlu falšovaná nebyla

Spor o mortadelu: podle Lidlu falšovaná nebyla

Vitalia.cz: Jsou čajové sáčky toxické?

Jsou čajové sáčky toxické?

Lupa.cz: Teletext je „internetem hipsterů“

Teletext je „internetem hipsterů“

Měšec.cz: Air Bank zruší TOP3 garanci a zdražuje kurzy

Air Bank zruší TOP3 garanci a zdražuje kurzy

Podnikatel.cz: K EET. Štamgast už peníze na stole nenechá

K EET. Štamgast už peníze na stole nenechá

Měšec.cz: Kdy vám stát dá na stěhování 50 000 Kč?

Kdy vám stát dá na stěhování 50 000 Kč?

Lupa.cz: Insolvenční řízení kvůli cookies? Vítejte v ČR

Insolvenční řízení kvůli cookies? Vítejte v ČR

Vitalia.cz: Mondelez stahuje rizikovou čokoládu Milka

Mondelez stahuje rizikovou čokoládu Milka

DigiZone.cz: Sat novinky: Fransat UHD Demo

Sat novinky: Fransat UHD Demo