Różnica między powłokami BASH i SH

BASH (Bourne Again SHell) i SH (Bourne SHell) są dwoma popularnymi powłokami (shells) w systemach Unix i Linux. Oto różnice między nimi:

  1. Historia i kompatybilność:
    • SH: Bourne Shell (sh) był oryginalną powłoką wprowadzoną w systemie Unix w latach 70. Powłoka ta była powszechnie stosowana w starszych wersjach systemów Unix.
    • BASH: Bourne Again Shell (bash) został wprowadzony jako rozwinięcie i ulepszona wersja powłoki Bourne Shell. BASH jest kompatybilny wstecz z powłoką Bourne Shell, co oznacza, że większość skryptów napisanych dla sh działa również w bash.
  2. Rozszerzone funkcje:
    • BASH: BASH wprowadza wiele rozszerzonych funkcji w porównaniu do SH. Obejmują one tablicy, wyrażenia regularne, manipulację ciągami, sterowanie strumieniami wejścia/wyjścia i wiele innych ulepszeń.
    • SH: SH jest bardziej ograniczony pod względem funkcji. Obejmuje podstawowe operacje na plikach, wywoływanie programów i podstawowe przekierowania strumieni.
  3. Kompatybilność skryptów:
    • BASH: BASH jest bardziej wszechstronny i obsługuje większą liczbę poleceń i składni w porównaniu do SH. Skrypty napisane w bash zwykle działają również w innych powłokach, takich jak sh, zgodnie z zasadą kompatybilności wstecznej.
    • SH: Skrypty napisane w SH mają mniejszą szansę działać poprawnie w bash ze względu na brak niektórych rozszerzonych funkcji.
  4. Domyślna powłoka systemowa:
    • BASH: W wielu nowoczesnych dystrybucjach Linux domyślną powłoką systemową jest bash.
    • SH: W niektórych starszych dystrybucjach Unix lub systemach wbudowanych nadal można znaleźć sh jako domyślną powłokę systemową.

PRzykładowy skrypt z pętlą „for”.

BASH:

SH:

W obu przypadkach skrypty wykonają tę samą zadanie, ale składnia tablicowa {1..5} jest specyficzną dla BASH i nie będzie działać w SH. Dlatego w SH używamy pojedynczych wartości 1 2 3 4 5 jako

Leave a Reply

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *