Mi a Shell?
A shell egy olyan program, amely interfészt biztosít a felhasználó és az operációs rendszer (OS) magja között. Az operációs rendszer minden felhasználó számára elindít egy héjat, amikor a felhasználó bejelentkezik, vagy megnyit egy terminált vagy konzolablakot.
A rendszermag olyan program, amely:
- A számítógép összes műveletét irányítja.
- Koordinálja az összes futtatott segédprogramot
- Ez biztosítja, hogy a futtatott segédprogramok ne zavarják egymást, és ne használják fel az összes rendszererőforrást.
- Evezeti és kezeli az összes rendszerfolyamatot.
A kernelhez kapcsolódva a héj lehetőséget biztosít a felhasználó számára a segédprogramok és programok futtatására.
Felhasználói környezet
A héj egy felhasználói környezetet is biztosít, amelyet inicializálási fájlok segítségével testre szabhatunk. Ezek a fájlok a felhasználói környezet jellemzőinek beállításait tartalmazzák, például:
- Keresési útvonalak a parancsok kereséséhez.
- Az új fájlok alapértelmezett engedélyei.
- A más programok által használt változók értékei.
- Az értékek testre szabhatók.
Melyek a különböző héjak?
A következő szakaszok a főként UNIX/Linux operációs rendszeren elérhető OS-héjakat ismertetik. A héjak jellemzőit és alapértelmezett parancskéréseiket is ismertetjük.
A Bourne héj
A Bourne héj (sh), amelyet Steve Bourne írt az AT&T Bell Labs-nál, az eredeti UNIX héj. Kompaktsága és gyorsasága miatt ez a legkedveltebb shell a shell programozáshoz. A Bourne-héj hátránya, hogy hiányoznak belőle az interaktív használathoz szükséges funkciók, mint például a korábbi parancsok felidézésének lehetősége (history). A Bourne héjból hiányzik a beépített aritmetikai és logikai kifejezések kezelése is.
A Bourne héj a Solaris OS alapértelmezett héja. Ez a Solaris rendszerfelügyeleti szkriptek szabványos héja. A Bourne héj esetében a:
- A parancs teljes elérési útjának neve /bin/sh és /sbin/sh.
- A nem root felhasználó alapértelmezett promptja a $.
- A root felhasználó alapértelmezett promptja a #.
A C héj
A C héj (csh):
- Egy UNIX-fejlesztés, amelyet Bill Joy írt a Berkeley-i Kaliforniai Egyetemen.
- Az interaktív használatra szolgáló funkciókat, például az aliasokat és a parancstörténetet tartalmazza.
- Kényelmes programozási funkciókat tartalmaz, mint például a beépített aritmetika és a C-szerű kifejezés szintaxis.
A C héj esetében a:
- A parancs teljes elérési útja a /bin/csh.
- Nem root felhasználó alapértelmezett promptja a hostname %.
- Root felhasználó alapértelmezett promptja a hostnév #.
A Korn shell
A Korn shell (ksh):
- A David Korn írta az AT&T Bell Labs-nél
- A Bourne shell szuperkészlete.
- Támogatja a Bourne shell minden elemét.
- A C shell-hez hasonló interaktív funkciókkal rendelkezik.
- Kényelmes programozási funkciókat tartalmaz, mint a beépített aritmetika és a C-hez hasonló tömbök, függvények és karakterlánc-kezelési lehetőségek.
- Gyorsabb, mint a C shell.
- A Bourne héjhoz írt szkripteket futtat.
A Korn héj esetében a:
- A parancs teljes elérési útjának neve /bin/ksh.
- A nem root felhasználó alapértelmezett promptja a $.
- A root felhasználó alapértelmezett promptja a #.
A GNU Bourne-Again shell
A GNU Bourne-Again shell (bash):
- Kompatibilis a Bourne shell-el.
- A Korn és C shell hasznos funkcióit tartalmazza.
- A parancsok előhívásához és szerkesztéséhez automatikusan hozzárendelt nyílbillentyűkkel rendelkezik.
A GNU Bourne-Again shell esetében a:
- A parancs teljes elérési útjának neve /bin/bash.
- A nem root felhasználó számára az alapértelmezett prompt a bash-x.xx$. (Ahol x.xx a shell verziószámát jelöli. Például bash-3.50$)
- Root felhasználó alapértelmezett promptja a bash-x.xx#. (Ahol x.xx a shell verziószámát jelöli. Például: bash-3.50$#)
Itt van egy rövid összehasonlítás mind a 4 shellről és tulajdonságaikról.
Shell | Path | Default Prompt (non-root felhasználó) | Egyértelmezett súgó (root felhasználó) | |
---|---|---|---|---|
A Bourne Shell (sh) | /bin/sh és /sbin/sh | $ | # | |
A C Shell (csh) | /bin/csh | % | # | |
A Korn Shell (ksh) | /bin/ksh | $ | # | |
A GNU Bourne-kezelő program.Again Shell (Bash) | /bin/bash | bash-x.xx$ | bash-x.xx# |