sh vs. bash : Összefoglaló

ápr 18, 2021
admin

Ha ezt olvasod, akkor jó eséllyel találkoztál már a shell, sh, bash stb. kifejezésekkel. Ezek a kifejezések zavaróan hangozhatnak, és mivel szorosan kapcsolódnak egymáshoz, ez tovább rontja a problémát. Ezért úgy döntöttem, hogy megírom ezt a bejegyzést azzal a céllal, hogy megpróbálom elmagyarázni a köztük lévő különbségeket.

Shell vs Kernel

Mielőtt továbbmennénk, fontos, hogy megértsük, mit jelentenek a shell és a kernel kifejezések.

Kernel

A kernel az operációs rendszer központja. Olyan dolgokért felelős, mint a hardverrel való interakció, a fájl I/O végrehajtása és a folyamatok indítása.

Shell

A shell interfészként működik a felhasználó és a kernel között. Technikailag a shell egy parancssor-értelmező, azaz az a program, amely vagy a terminálemulátorban beírt parancsot értelmezi (interaktív mód), vagy shell-szkripteket (parancsokat tartalmazó szövegfájlokat) dolgoz fel.

Most, hogy már tudjuk, mi a shell és a kernel, megpróbálhatjuk megérteni a sh-t és a Bash-t.

sh

A sh (vagy Shell Command Language) szigorúan véve a POSIX szabvány által leírt programozási nyelv. A kulcs itt az, hogy a sh önmagában nem igazán programozási nyelv. Ez csak egy specifikáció. A specifikáció az adott nyelv szintaxisának és szemantikájának részletes leírása. A specifikáció nem tartalmaz implementációt.

Bash

A különböző operációs rendszerek saját héjakkal és kernellel rendelkeznek. A Bash a GNU operációs rendszer héja. De azt is mondhatjuk, hogy a bash egy programozási nyelv.

Várjunk csak, nem zavaró? A bash egyszerre shell és programozási nyelv?

Gondoljunk csak a pythonra. A Pythont is elindíthatjuk interaktív módban, és úgy viselkedik, mint egy shell. Vagy JavaScript, vagy Ruby, vagy bármilyen szkriptnyelv.

Van értelme?

A bash tehát egy olyan programozási nyelv, amelyet a sh implementációjának tekinthetünk (bár ez idővel megváltozott).

Összefoglalva, a sh egy specifikáció, a bash az implementáció.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.