A bekapcsolástól a bash promptig: Bash

Következő Előző Tartalom

## 11. Bash

Ha adsz a "`login`"-nak egy érvényes felhasználói név - jelszó párost, ellenőrzi azt az `/etc/passwd` állományban, hogy megtudja melyik shell-t indítsa el neked. Linux rendszeren ez legtöbbször a "`bash`". A "`bash`" dolga a parancsaid értelmezése, illetve gondoskodni ezek végrehajtásáról. Egyszerre felhasználói felület és programnyelv-értelmező (programming language interpreter - a lektor).

Mint felhasználói felület beolvassa parancsaidat, és végre is hajtja ezeket - amennyiben un. "belső" parancsok, mint például a "`cd`" - illetve megkeresi és futtatja a programot, - ha az egy un. "külső" parancs, mint például a "`cp`" vagy a "`startx`". Olyan megszokott dolgokat is csinál, mint például megjegyzi az előzőleg kiadott parancsokat valamint kiegészíti a fájlneveket.

Már láttuk a "`bash`"-t működni, mint programnyelv-értelmező. A szkriptek, amiket az "`init`" a rendszer elindításáért futtat, általában shell szkriptek, amelyeket a "`bash`" hajt végre. Egy rendes programnyelv, a szokásos parancssoros rendszereszközökkel nagyon hatásos kombinációt alkot, ha tudod mit csinálsz. Például sokat kellett foltoznom (patch - a ford.) egy könyvtárnyi forráskódon a minap. Mindezt egyetlen sorral végre tudtam hajtani:

    for f in /home/greg/sh-utils-1.16*.patch; do patch -p0 < $f; done;

Ez megvizsgálja az összes olyan fájlt a home könyvtáramban, aminek a neve "`sh-utils-1.16`"-al kezdődik, és "`.patch`"-el végződik. Mindezt ciklusban teszi, beállítja az "`f`" változót, majd végrehajtja a "`do`" és "`done`" közötti parancsot. Ebben az esetben 11 folt volt, de könnyen lehetett volna akár 3000 is.

## 11.1 Beállítás

Az `/etc/profile` fájl határozza meg a bash viselkedését/működését a teljes rendszerre vonatkozóan. Amit ide beraksz, az hatással lesz mindenkire, aki a bash shellt használja a rendszereden. Különböző dolgokat fog csinálni, például könyvtárakat ad hozzá a "`PATH`"-hoz, vagy beállítja a "`MAIL`" környezeti változót.

A billentyűzet alapbeállítása gyakran kívánnivalót hagy maga után. A readline az, ami ezt irányítja. Ez egy különálló csomag, ami a parancssori csatolófelületet irányítja, rendelkezésre bocsátja a parancssori történetet (command history) és fájlnév-kiegészítést, csakúgy mint néhány fejlettebb sorszerkesztési módot. Ez bele van szerkesztve a bash-ba. Alapértelmezésként a readline a home könyvtáradban lévű `.inputrc` fájl használatára van beállítva. Az INPUTRC változó használható arra, hogy a bash számára felülírjuk ezt. Például a Red Hat 6 rendszerben az "`INPUTRC`" értéke `/etc/inputrc` az `/etc/profile` fájlban. Ez azt jelenti, hogy a backspace, delete, home és end billentyűk mindenkinek nagyszerűen működnek.

A bash a teljes rendszerre vonatkozó beállítások beolvasása után a személyes beállításokat tartalmazó fájlt keresi meg. Ellenőrzi a home könyvtáradat, `.bash_profile`, `.bash_login` és `.profile` fájlok után kutatva. Ezek közül az első létezőt futtatja. Ha a bash működésén szeretnél változtatni úgy, hogy a többiekre ne legyen hatással, akkor azt itt tedd meg. Például sok alkalmazás környezeti változókat használ a működésének beállítására. Nekem van egy "`EDITOR`" változóm, ami a "`vi`" programra van beállítva, így én ezt használhatom a Midnight Commanderben (egy kiváló karakteres fájlkezelő) az ő saját szövegszerkesztője helyett.

## 11.2 Gyakorlatok

A bash alapjait könnyű megtanulni. De ne állj meg itt: hihetetlen mélységei vannak. Tedd szokásoddá, hogy mindig jobb utat keresel egy dolog véghezvitelére.

Olvass shell szkripteket, keresd meg azokat a részeket, amelyeket nem értesz.

## 11.3 További információ

- Létezik egy "Bash Reference Manual" (Bash referencia kézikönyv) amely részletes, de nehezen érthető
- Van egy O'Rielly könyv amely a Bash-ról szól, de nem vagyok biztos abban, hogy ez jó
- én nem ismerek több szabadon használható, jó és naprakész ismertetőt a "bash"-ról. Ha Te igen, kérlek küld el nekem e-mailben az URL-t
- forráskódokra mutató hivatkozásokért látogass el a Building a Minimal Linux System from Source Code honlapra

Következő Előző Tartalom