If-Koubou

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

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

Większość dystrybucji systemu Linux zawiera domyślnie powłokę Bash, ale można także przełączyć się do innego środowiska 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 opiera się na koncepcji, 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 skryptów, 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ż wykorzystywana 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.

Pociski prowadzące do poziomu 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 na cześć jej twórcy Stephena Bourne'a, który pracował w Bell Labs AT & T. 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 w późnych latach 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ł zaprojektowany na podstawie języka programowania C, do którego 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 biegiem czasu 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 bash

Interfejs przenośnego 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 w systemie MacOS firmy Apple i jest dostępna do zainstalowania w systemie Windows 10 firmy Microsoft.

Nowsze Pociski: jesion, kreska, zsh i ryba

Podczas gdy społeczność Linuksa osiedliła się na Bash w ostatnich latach, deweloperzy nie przestali tworzyć nowych powłok, gdy Bash został wydany po raz pierwszy 28 lat temu.

Kenneth Almquist stworzył klona Bourne'a, znany jako Shell Almquish, Shell, "ash", a czasem po prostu "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, czyli "ryba", wydana w 2005 roku. Ma unikalną składnię wiersza poleceń, która ma być 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 powinno 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 Linux lub 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 skorupa, na którą napotkasz, jest oparta na Bourne i działa podobnie - w tym zsh.

Właśnie 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ń, i wię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 muszle. 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 powłokami

Łatwo jest przejść do nowej powłoki, 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. Uruchomisz następujące polecenia, aby zainstalować, a następnie uruchomić:

sudo apt install zsh zsh

Będziesz wtedy siedział w muszli zsh. Rodzaj " wyjście "W powłoce, aby ją opuścić i wrócić do obecnej 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 ogólnie użyć skrótu chsh lub polecenie "Zmień powłokę".

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

który zsh

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

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

chsh

Zgodnie z powyższym poleceniem wchodzimy / usr / bin / zsh . Powłoka zsh będzie wtedy naszą domyślną, dopóki nie uruchomimy chsh Polecenie i zmienił je z powrotem.