Powłoki systemowe: sh vs bash vs fish

Powłoki systemowe: sh vs bash vs fish

Poziom trudności
2/5

Używając Linux’a, często korzystamy z konsoli. Cześć użytkowników nie zdaje sobie nawet sprawy, że istnieją powłoki systemowe, a tym samym nie są w stanie określić, z jakiej korzystają, i dlaczego. W tym artykule postaram się przybliżyć ten temat, jednocześnie krótko opisując kilka wybranych z nich, czyli sh, bash oraz fish

Pojęcie powłok systemowych

Zacznijmy może od zdefiniowania, czym są powłoki systemowe. Najprościej można je określić jako medium pośredniczące pomiędzy użytkownikiem a aplikacjami. Od strony technicznej jest to program komputerowy, którego zadaniem jest przyjmowanie komend od użytkownika, monitorowanie działania oraz zapewnieni interakcji z programami uruchomionymi za jego pomocą.

Zarządzanie powłokami systemowymi

W danym systemie możemy mieć zainstalowaną dowolną liczbę powłok, z zastrzeżeniem, że aktywną w danej chwili może być tylko jedna. Przyjrzyjmy się zatem bliżej, jak nimi zarządzać. Dostępne w systemie powłoki są zapisane w pliku shells, znajdującym się w katalogu etc. Aby sprawdzić, jakie są dostępne w naszym Linux’ie, wystarczy sprawdzić zawartość tego pliku. Można to zrobić, wykorzystując narzędzie cat:

qabrio@test1:~$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash

Jak widzimy, w moim systemie dostępne są domyślnie cztery powłoki systemowe. Dwie , które opisujemy, czyli sh oraz bash są preinstalowane w Linux’ie, natomiast trzecią będziemy musieli doinstalować ręcznie. Aby zmienić powłokę, wystarczy w konsoli wpisać jej nazwę, czyli w przypadku zmiany na sh, należy użyć:

qabrio@test1:~$ sh
$

Aby powrócić do powłoki bash, użyjemy:

$ bash
qabrio@test1:~$

Bourne Shell

Jedną z prostszych w użyciu, a jednocześnie podstawowych powłok większości systemów unix‚owych jest powłoka Bourne Shell. Swoją nazwę zawdzięcza autorowi, czyli Stephanowi Bourne’owi, który opracował ją już w 1977 roku. Powłoka używa języka skryptowego sh i pod taką też nazwą można ją znaleźć w systemie. Powłoka jest bardzo uboga, jeśli spojrzymy na nią pod kątem wspomagania pracy użytkownika. Jednocześnie jest bardzo lekka dla systemu. Biorąc wszystkie powyższe fakty pod uwagę, warto umieć się w niej poruszać. Wiele systemów embedded opierających się na Linux’ie, a posiadających ograniczone zasoby, korzystają właśnie z niej.

Powłoki systemowe: sh vs bash vs fish image

Powłoka ta niestety nie posiada szeregu cech znanych nam z innych powłok, takich jak auto uzupełnianie składni, przetrzymywanie historii czy rozbudowane znaki zachęty.

Bourne-again Shell

Kolejną z popularnych powłok systemowych jest bash. Została ona napisana przez Briana Fox‚a, i na dobre zadomowiła się w systemach z rodziny Linux. Jej nazwa to skrót od Bourne-again Shell, co oznacza jako naradzenie się na nowo powłoki Bourne Shell. Powłoka jest znacznie bardziej przyjazna użytkownikowi i prawdopodobnie otwierając pierwszy raz konsolę w waszym systemie, zobaczycie właśnie ją. Charakteryzuje się ona wieloma udogodnieniami, których brakowało w powłoce Bourne Shell, czyli historia czy podpowiadanie komend lub nazw plików, po użyciu przycisku TAB na klawiaturze. Ponadto przy znaku zachęty ($) mamy informacje o aktualnej ścieżce, co w większości wypadków ułatwia pracę oraz poruszanie się po systemie. Jeśli jednak jesteśmy w systemie w bardzo zawiłej ścieżce, może się to okazać uciążliwe.

Powłoki systemowe: sh vs bash vs fish image

Friendly Interactive Shell

Trzecią powłoką, o której warto wspomnieć, jest powłoka fish, co jest skrótem od Friendly Interactive Shell, czyli przyjaznej interaktywnej powłoki. Jak sama nazwa wskazuje, charakteryzuje się ona znacznymi udogodnieniami dla użytkownika. Wiąże się to jednak z tym, że powłoka jest cięższa dla systemu. Kolejnym minusem tej powłoki jest konieczność ręcznej instalacji. Możemy to wykonać standardowo programem apt:

qabrio@test1:~$ sudo apt install fish

Po zakończonej instalacji, gdy sprawdzimy dostępne powłoki, powinna ona być w nich dostępna:

qabrio@test1:~$ cat /etc/shells
# /etc/shells: valid login shells
/bin/sh
/bin/bash
/bin/rbash
/bin/dash
/usr/bin/fish

Wróćmy jednak do charakterystyki tej powłoki oraz udogodnień, jakie ona oferuje użytkownikowi. Model podpowiedzi komend oraz plików został w niej znacznie rozbudowany, dzięki czemu podczas pisania kolejnych liter, na bieżąco wyświetlają się prawdopodobne komendy. Co ciekawe wybór tych komend bazuje na historii naszych działań. Aby zaakceptować propozycję, wystarczy użyć strzałki w prawo. Kolejną ciekawą funkcją jest podświetlanie składni w pisanych przez nas komendach. Jeśli dana komenda, którą wpisaliśmy istnieje, jest podświetlona na niebiesko, w przeciwnym wypadku na czerwono. Również został tutaj poprawiony model prezentowania ścieżek przy znaku zachęty (>). W przypadku wielu zagnieżdżeń, nazwy kolejnych katalogów zostają skrócone, dzięki czemu nie zajmują one całego ekranu.

Powłoki systemowe: sh vs bash vs fish image

Istnieje jeszcze wiele innych powłok systemowych, których możemy używać (na przykład tcsh, csh, ksh…). Jednak celem artykułu było przybliżenie tematyki najczęściej używanych powłok systemowych wraz z krótkim opisem.

Powłoki systemowe: sh vs bash vs fish image

Dodaj komentarz