sh vs bash : Podsumowanie

kw. 18, 2021
admin

Jeśli czytasz to, jest duża szansa, że natknąłeś się na terminy shell, sh, bash itp. w przeszłości. Terminy te mogą wydawać się mylące, a ponieważ są one blisko spokrewnione, co sprawia, że problem jest jeszcze gorszy. Więc zdecydowałem się napisać ten post w celu wyjaśnienia różnic między nimi.

Powłoka vs Jądro

Przed przejściem dalej ważne jest, abyśmy zrozumieli co oznaczają terminy powłoka i jądro.

Jądro

Jądro jest centrum systemu operacyjnego. Jest odpowiedzialne za takie rzeczy jak interakcja ze sprzętem, wykonywanie operacji wejścia/wyjścia plików i wywoływanie procesów.

Powłoka

Powłoka działa jako interfejs między użytkownikiem a jądrem. Technicznie rzecz biorąc, powłoka jest interpreterem wiersza poleceń, tj. programem, który albo interpretuje polecenia wprowadzane przez użytkownika w emulatorze terminala (tryb interaktywny), albo przetwarza skrypty powłoki (pliki tekstowe zawierające polecenia).

Teraz, gdy mamy już pojęcie, czym są powłoka i jądro, możemy spróbować zrozumieć sh i Bash.

sh

Ściśle mówiąc, sh (lub język poleceń powłoki) jest językiem programowania opisanym przez standard POSIX. Kluczem jest tu fakt, że sh nie jest tak naprawdę językiem programowania samym w sobie. Jest to po prostu specyfikacja. Specyfikacja jest szczegółowym opisem składni i semantyki tego języka. Specyfikacja nie zawiera implementacji.

Bash

Istnieją różne systemy operacyjne z ich własnymi powłokami i jądrami. Bash jest powłoką dla systemu operacyjnego GNU. Ale możemy też powiedzieć, że bash jest językiem programowania.

Czekaj, czy to nie jest mylące? Czy bash jest zarówno powłoką, jak i językiem programowania?

Pomyślmy o pythonie. Możemy również uruchomić Pythona w trybie interaktywnym i zachowuje się on jak powłoka. Albo JavaScript, albo Ruby, albo jakikolwiek język skryptowy.

Ma to sens?

Więc bash jest językiem programowania, o którym można myśleć jako o implementacji sh (chociaż z czasem to się zmieniło).

Podsumowując, sh jest specyfikacją, bash jest implementacją.

.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.