Główna » jak » 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?

    Większość dystrybucji Linuksa 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, kiedy wydano pierwszą powłokę.

    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, testy warunków i pętle, a także inne funkcje. Nie zapewniało 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, w 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 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 prawnie zastrzeżonej licencji. To nie było wolne oprogramowanie do 2000 roku, kiedy zostało wydane na różnych licencjach open source.

    Narodziny bash

    Interfejs Portable Operating System 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 stanowi część bezpłatnego 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 zaprzestali tworzenia nowych powłok po pierwszym wydaniu Basha 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ą w systemach z wbudowanym systemem Linux. Jeśli masz zrootowany telefon z Androidem z zainstalowanym BusyBox - lub innym urządzeniem 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 z myślą o zgodności ze standardem POSIX i jest 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 r., 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ść śledzenia 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ń, 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 powinno wybrać? (i dlaczego Zsh jest popularny)

    Nie musisz wybierać powłoki. Twój system operacyjny wybiera dla ciebie domyślną powłokę, a wybór ten jest prawie zawsze 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 będziesz ich używał, 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 od basha, przeniesie się do korzystania z 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ą korektę 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 mieć 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 poświęcania czasu na szczypanie 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 używasz 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 menadż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 je 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 swoją domyślną powłokę. Aby zmienić powłokę widoczną po zalogowaniu się jako powłoka logowania, można zazwyczaj 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 to, że plik binarny zsh jest przechowywany w / 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.