22Jul

Jaka jest różnica między Bash, Zsh i innymi powłokami Linux?

Większość dystrybucji systemu Linux zawiera domyślnie powłokę Bash, ale można również przełączyć się na inne środowisko powłoki. Zsh jest szczególnie popularną alternatywą i istnieją inne powłoki, takie jak popiół, kreska, ryba i tcsh. Ale jaka jest różnica i dlaczego jest ich tak wiele?

Co robią muszle?

Po zalogowaniu się w wierszu poleceń lub uruchomieniu okna terminala w systemie Linux, system uruchamia program powłoki. Powłoki oferują standardowy sposób rozszerzania środowiska wiersza poleceń.Jeśli chcesz, możesz zamienić domyślną powłokę na inną.

Pierwszym środowiskiem powłoki był Shell Thompsona, opracowany w Bell Labs i wydany w 1971 roku. Środowisko Shell od tego czasu tworzy tę koncepcję, dodając wiele nowych funkcji, funkcjonalności i ulepszeń szybkości.

Na przykład Bash oferuje uzupełnianie poleceń i nazw plików, zaawansowane funkcje skryptowania, historię poleceń, konfigurowalne kolory, aliasy poleceń i wiele innych funkcji, które nie były dostępne w 1971 roku po wydaniu pierwszej powłoki.

Powłoka jest również używana w tle przez różne usługi systemowe. Dystrybucje systemu Linux zawierają wiele funkcji zapisanych jako skrypty powłoki. Skrypty te są komendami i innymi zaawansowanymi funkcjami skryptów powłoki uruchamianymi w środowisku powłoki.

Powłoki wiodące do Bash: sh, csh, tsh i ksh

Najbardziej znanym protoplastą nowoczesnych muszli jest muszla Bourne'a - znana również jako "sh" - która została nazwana po swoim twórcy Stephen Bourne, który pracował w AT & T's BellLabs. Wydany w 1979 r. Stał się domyślnym interpreterem poleceń w systemie Unix, ponieważ wspierał zastępowanie poleceń, orurowanie, zmienne, testowanie warunków i tworzenie pętli, a także inne funkcje. Nie zapewniało ono wielu dostosowań dla użytkowników i nie obsługiwało takich nowoczesnych nicetiów jak aliasy, uzupełnianie poleceń i funkcje powłoki( chociaż ten ostatni został ostatecznie dodany).

Powłoka C, czyli "csh", została opracowana pod koniec lat 70. przez Billa Joya z University of California, Berkley. Dodano wiele elementów interaktywnych, za pomocą których użytkownicy mogliby kontrolować swoje systemy, takie jak aliasy( skróty dla długich poleceń), umiejętności zarządzania zadaniami, historia poleceń i inne. Został on wzorowany na języku programowania C, na którym został napisany system operacyjny Unix. Oznacza to również, że użytkownicy powłoki Bourne musieli się uczyć C, aby mogli wprowadzać do niej komendy. Ponadto csh miał sporo błędów, które musieli pokonać zarówno użytkownicy, jak i twórcy przez długi czas. Ludzie zaczęli używać powłoki Bourne dla skryptów, ponieważ lepiej radzili sobie z nieinteraktywnymi poleceniami, ale z powłoką C używali jej do normalnego użytku.

Z czasem wiele osób poprawiło błędy i dodało funkcje do powłoki C, zakończone ulepszoną wersją csh znaną jako "tcsh".Ale csh był nadal domyślny na komputerach z systemem Unix i dodał kilka niestandardowych funkcji. David Korn z Bell Labs pracował nad KornShell, czyli "ksh", który próbował poprawić sytuację, będąc w tył kompatybilnym z językiem powłoki Bourne'a, ale dodając wiele funkcji z powłoki csh. Został wydany w 1983 roku, ale na podstawie licencji. To nie było wolne oprogramowanie do 2000 roku, kiedy to zostało wydane na różnych licencjach open source.

Narodziny bashu

Przenośny interfejs systemu operacyjnego dla systemu Unix lub POSIX był kolejną odpowiedzią na gorączkowe własnościowe implementacje csh. Pomyślnie stworzył standard interpretacji poleceń( między innymi) i ostatecznie odzwierciedlił wiele funkcji w KornShell. W tym samym czasie projekt GNU próbował stworzyć wolny, zgodny z Unix system operacyjny. Projekt GNU opracował powłokę wolnego oprogramowania, która stała się częścią darmowego systemu operacyjnego i nazwała ją "Bourne Again Shell" lub "bash".

Bash został ulepszony w ciągu dziesięcioleci od pierwszego wydania w 1989 roku, ale nadal jest domyślną powłoką w większości dystrybucji Linuksa. Jest to również domyślna powłoka na MacOSie Apple'a i jest dostępna do zainstalowania na Windows 10.

Nowsze powłoki: ash, dash, zsh i fish

Podczas gdy społeczność Linuksa osiedliła się na Bash w ostatnich latach, deweloperzy nie zatrzymali siętworzenie nowych powłok po pierwszym wydaniu Bash 28 lat temu.

Kenneth Almquist stworzył klona Bourne'a, znany jako Shell Almquish, Shell, "ash", a czasem tylko "sh".był kompatybilny z POSIX i stał się domyślną powłoką w BSD, innej gałęzi Unix. Powłoka jesionowa jest bardziej lekka niż bash, co czyni ją popularną we wbudowanych systemach Linux. Jeśli masz zrootowany telefon z Androidem z zainstalowanym BusyBox - lub inne urządzenie z pakietem oprogramowania BusyBox - używa on kodu z popiołu.

Debian opracował środowisko powłoki oparte na popiołach i nazwał je "kreską".Został zaprojektowany jako zgodny z POSIX i lekki, więc jest szybszy niż Bash, ale nie ma wszystkich jego funkcji. Ubuntu używa powłoki Dash jako domyślnej powłoki dla zadań nieinteraktywnych, przyspieszając skrypty powłoki i inne zadania działające w tle. Ubuntu nadal używa powłoki bash dla interaktywnych powłok, dzięki czemu użytkownicy nadal mają w pełni funkcjonalne środowisko interaktywne.

Jedną z najpopularniejszych nowszych powłok jest Z shell lub "zsh".Stworzona przez Paula Falstada w 1990 roku, zsh jest powłoką w stylu Bourne'a, zawierającą funkcje, które znajdziesz w bashu, a nawet więcej. Na przykład, zsh ma sprawdzanie pisowni, możliwość oglądania logowań / wylogowań, niektóre wbudowane funkcje programowania, takie jak kod bajtowy, obsługa notacji naukowej w składni, pozwala na arytmetykę zmiennoprzecinkową i więcej funkcji.

Kolejną nowszą powłoką jest Friendly Interactive Shell lub "fish", wydana w 2005 roku. Ma unikalną składnię wiersza poleceń, zaprojektowaną tak, aby była nieco łatwiejsza do nauczenia, ale nie pochodzi od powłoki Bourne ani powłoki C.To ciekawy pomysł, ale to, czego uczysz się poprzez używanie ryb, niekoniecznie pomoże ci w używaniu bash i innych pocisków pochodzących z Bourne'a.

, które powinieneś wybrać?(i dlaczego Zsh jest popularny)

Nie musisz wybierać powłoki. Twój system operacyjny wybiera dla ciebie domyślną powłokę, a ten wybór prawie zawsze jest bash. Usiądź przed dystrybucją Linuksa - lub nawet Mac - i prawie zawsze będziesz miał środowisko powłoki bash. Bash ma sporo zaawansowanych funkcji, ale prawdopodobnie nie użyjesz ich, chyba że zaprogramujesz skrypty powłoki.

W systemach wbudowanych lub systemach BSD skończysz z powłoką popiołu. Ale jesion jest powłoką Bourne'a i jest w dużej mierze kompatybilny z bash. Wszelka wiedza, którą masz o korzystaniu z bashu, przeniesie się do używania powłoki popiołu lub łupka, chociaż niektóre zaawansowane funkcje skryptów nie są dostępne w tej lekkiej powłoce.

Prawie każda powłoka, którą napotkasz, jest oparta na Bourne i działa podobnie - w tym zsh.

Dlatego zsh jest popularny. Ta nowsza powłoka jest zgodna z bash, ale zawiera więcej funkcji. Powłoka zsh oferuje wbudowaną korekcję pisowni, ulepszone uzupełnianie wiersza poleceń, ładowalne moduły, które działają jako wtyczki dla twojej powłoki, globalne aliasy, które pozwalają ci na aliasy nazw plików lub cokolwiek innego w linii poleceń, zamiast tylko poleceń, iwięcej wsparcia tematycznego. To jak bash, ale z wieloma dodatkami, dodatkowymi funkcjami i konfigurowalnymi opcjami, które możesz docenić, jeśli spędzasz dużo czasu w linii poleceń.

Jeśli znasz bash, możesz przełączyć się na zsh bez uczenia się innej składni - po prostu uzyskasz dodatkowe funkcje.jeśli znasz zsh, możesz przełączyć się na bash bez uczenia się innej składni - po prostu nie będziesz miał dostępu do tych funkcji.

"Oh My ZSH" to narzędzie, które pomaga łatwiej włączać wtyczki zsh i przełączać się między gotowymi motywami, szybko dostosowując swoją powłokę zsh bez spędzania wielu godzin na podkręcaniu rzeczy.

Są też inne powłoki. Na przykład powłoka tcsh wciąż istnieje i nadal jest opcją.FreeBSD używa tsch jako domyślnej powłoki głównej i popiołu jako domyślnej powłoki interaktywnej. Jeśli korzystasz z programowania C regularnie, tsch może być lepiej dla Ciebie. Jednak nie jest to tak popularne jak bash czy zsh.

Jak przełączać się między skorupami

Łatwo jest przełączyć się na nową powłokę, aby ją wypróbować.Po prostu zainstaluj powłokę z menedżera pakietów Linux dystrybucji i wpisz polecenie, aby uruchomić powłokę.

Na przykład, powiedzmy, że chcesz wypróbować zsh na Ubuntu. Uruchamiasz następujące polecenia, aby zainstalować, a następnie uruchomić:

sudo apt install zsh zsh

Będziesz wtedy siedział w powłoce zsh. Wpisz "exit" w powłoce, aby ją opuścić i wrócić do aktualnej powłoki.

To tylko tymczasowe. Za każdym razem, gdy otworzysz nowe okno terminala lub zalogujesz się do systemu w wierszu poleceń, zobaczysz domyślną powłokę.Aby zmienić powłokę widoczną po zalogowaniu się jako powłoka logowania, można zazwyczaj użyć polecenia chsh lub polecenia "Zmień powłokę".

Aby użyć tego polecenia, musisz najpierw znaleźć pełną ścieżkę do powłoki za pomocą komendy who. Na przykład, powiedzmy, że chcemy zmienić na powłokę zsh. Uruchomiliśmy następującą komendę:

która zsh

W systemie Ubuntu, mówi nam, że plik binarny zsh jest przechowywany na /usr/bin/ zsh.

Uruchom następujące polecenie, wprowadź swoje hasło, a zostaniesz poproszony o wybranie nowej powłoki logowania:

chsh

Zgodnie z powyższym poleceniem wprowadzimy /usr/bin/ zsh. Powłoka zsh byłaby wtedy naszą domyślną, dopóki nie uruchomilibyśmy komendy chsh i nie zmieniliśmy jej.