22Jul

Jaký je rozdíl mezi Bash, Zsh a jinými systémy Linux?

click fraud protection

Většina linuxových distribucí obsahuje výchozí bash shell, ale můžete také přepnout do jiného shellu prostředí.Zsh je obzvláště oblíbená alternativa a existují i ​​jiné mušle, jako je popel, pomlčka, ryby a tcsh. Ale jaký je rozdíl a proč existuje tolik?

Co dělají Shells?

Při přihlašování na příkazovém řádku nebo spuštění terminálu v systému Linux spustí systém shell program. Shells nabízí standardní způsob rozšíření prostředí příkazové řádky. Výchozí shell můžete vyměnit za jiný, pokud chcete.

První prostředí shellu bylo Thompson Shell vyvinuté v laboratořích Bell Labs a vydáno v roce 1971. Prostředí prostředí Shell od té doby stavělo na koncepci a přidalo řadu nových funkcí, funkčnosti a zlepšení rychlosti.

Například Bash nabízí dokončení příkazu a názvu souboru, pokročilé funkce skriptování, historii příkazů, konfigurovatelné barvy, aliasy příkazů a řadu dalších funkcí, které nebyly k dispozici již v roce 1971, kdy byl první shell uvolněn.

Shell je také používán na pozadí různými systémovými službami. Distribuce Linuxu obsahují mnoho funkcí napsaných jako shell skripty. Tyto skripty jsou příkazy a další pokročilé funkce pro skriptování skriptů, které běží skrze prostředí shellu.

instagram viewer

Shells to Bash: sh, csh, tsh a ksh

Nejvýznamnějším předkem moderních skořápek je shell Bourne - známý také jako "sh" - který byl pojmenován podle jeho tvůrce Stephena Bourne, který pracoval v AT & T's BellLabs. Vydáno v roce 1979, stalo se výchozím příkazem-tlumočníkem v Unixu díky podpoře výměny příkazů, potrubí, proměnných, testování stavu a smyčkování spolu s dalšími funkcemi. Neposkytoval uživatelům mnoho přizpůsobení a nepodporoval takové moderní techniky, jako jsou aliasy, dokončení příkazu a funkce shellu( ačkoli tento poslední byl nakonec přidán).

C shell, nebo "csh", byl vyvinut koncem 70. let Bill Joy na Kalifornské univerzitě v Berkley. Přidala mnoho interaktivních prvků, pomocí kterých mohou uživatelé ovládat své systémy, jako jsou aliasy( zkratky pro dlouhé příkazy), schopnosti správy pracovních pozic, historie příkazů a další.Byl vytvořen z programovacího jazyka C, který byl napsán samotným operačním systémem Unixu. To také znamenalo, že uživatelé shellu Bourne se museli naučit C, aby mohli v něm zadávat příkazy. Kromě toho měl csh celkem několik chyb, které musely být vynakládány uživatelům i tvůrcům po delší dobu. Lidé skončili pomocí skriptu Bourne pro skripty, protože lépe zpracovávali neinteraktivní příkazy, ale při normálním použití se slepovali s pláštěm C.

V průběhu času hodně lidí opravilo chyby a přidalo funkce do shellu C, vyvrcholilo vylepšenou verzí csh známou jako "tcsh".Ale csh byl stále standardní v počítačích se systémem Unix a přidal některé nestandardní funkce. David Korn z Bell Labs pracoval na KornShell nebo "ksh", který se snažil zlepšit situaci tím, že byl zpětně kompatibilní s jazykem shellu Bourne, ale přidal mnoho funkcí z shell shell. Byl propuštěn v roce 1983, ale pod licencí vlastníka. To nebyl svobodný software až do roku 2000, kdy byl propuštěn pod různými licencemi s otevřeným zdrojovým kódem.

Narození bash

Přenosné rozhraní operačního systému pro Unix nebo POSIX bylo další reakcí na hektické proprietární implementace csh.Úspěšně vytvořil standard pro interpretaci příkazů( mimo jiné) a nakonec zrcadlil spoustu funkcí v KornShell. Současně se projekt GNU pokoušel vytvořit bezplatný operační systém kompatibilní s Unixem. Projekt GNU vyvinul svobodný softwarový shell jako součást svého volného operačního systému a nazval ho "Bourne Again Shell" nebo "bash".

Bash byl zdokonalen v desetiletích od jeho prvního vydání v roce 1989, ale je to stále standardní shell na většině distribucí Linuxu dnes. Je to také výchozí shell pro Apple MacOS a je k dispozici pro instalaci na Windows 10 společnosti Microsoft.

Novější Shells: popel, pomlčka, zsh a ryby

Zatímco se komunita Linuxu v uplynulých letech vyrovnala s Bash, vývojáři se nezastavilivytváření nových skořápek, když byl Bash poprvé propuštěn před 28 lety.

Kenneth Almquist vytvořil shell Bourne shell známý jako Almquish shell, A Shell, "popel", nebo někdy jen "sh".to bylo také POSIX kompatibilní a stal se výchozí shell v BSD, jiný větev Unixu. Skořápka popela je mnohem lehčí než bash, což ji dělá populární u vestavěných systémů Linux. Máte-li nainstalovaný telefon Android s nainstalovaným BusyBoxem - nebo jakékoliv jiné zařízení s sadou programů BusyBox - používá se kód z popelu.

Debian vyvinul shell prostředí založené na popelu a nazval ho "pomlčkou".Je navržen tak, aby byl kompatibilní se standardem POSIX a lehký, takže je rychlejší než Bash, ale nebude mít všechny jeho funkce. Ubuntu používá jako pomůcku pomlčku jako výchozí shell pro neinteraktivní úlohy, urychluje shell skripty a další úkoly spuštěné na pozadí.Ubuntu stále používá bash pro interaktivní shell, nicméně uživatelé mají stále plnohodnotné interaktivní prostředí.

Jeden z nejpopulárnějších novějších shellů je Z shell nebo "zsh".Vytvořil Paul Falstad v roce 1990, zsh je shell ve stylu Bourne, který obsahuje funkce, které najdete v bash, plus ještě více. Například zsh má kontrolu pravopisu, schopnost sledovat přihlášení / odhlášení, některé zabudované programovací funkce jako bytecode, podpora vědecké notace v syntaxi, umožňuje plovoucí aritmetiku a další funkce.

Dalším novějším shellem je Friendly Interactive Shell nebo "fish", která byla vydána v roce 2005. Má jedinečnou syntaxi příkazového řádku, která je navržena tak, aby byla trochu jednodušší učit se, ale nebyla odvozena ani z shellu Bourne, ani C.Je to zajímavý nápad, ale to, co se naučíte pomocí ryb, nemusí nutně pomoci při použití bash a jiných skořápků pocházejících z Bourne.

Co byste si měli vybrat?(a proč Zsh je populární)

Nemusíte si vybrat shell. Váš operační systém si pro vás vybírá výchozí skořápku a tato volba je téměř vždy bash. Posaďte se před Linuxovou distribucí - nebo dokonce Mac - a téměř vždy budete mít prostředí bash shellu. Bash má poměrně málo pokročilých funkcí, ale pravděpodobně je nebudete používat, pokud nevypracujete shell skripty.

Na vestavěných systémech Linux nebo BSD skončíte s popelovým obalem. Ale popel je shell Bourne a je do značné míry kompatibilní s bash. Jakékoli znalosti, které máte od používání bash, se přenášejí na použití popelníku nebo pomlčkového shellu, ačkoli některé pokročilé skriptovací funkce nejsou k dispozici v tomto lehkém shellu.

Téměř každý shell, se kterým se setkáte, je založen na Bourne a pracuje podobně - včetně zsh.

Proto je zsh populární.Tento novější shell je kompatibilní s bash, ale obsahuje další funkce. Zsh shell nabízí vestavěnou opravu pravopisu, vylepšené dokončení příkazového řádku, načtené moduly, které fungují jako plug-iny pro váš shell, globální aliasy, které vám umožňují vytvářet jména aliasů nebo cokoli jiného na příkazovém řádku místo příkazů avíce tematická podpora. Je to jako bash, ale s mnoha doplňky, dalšími funkcemi a konfigurovatelnými možnostmi byste mohli ocenit, pokud strávíte spoustu času na příkazovém řádku.

Pokud jste s bash obeznámeni, můžete přepnout na zsh bez toho, abyste se naučili jinou syntaxi - získate další funkce.pokud znáte zsh, můžete přepnout na bash bez toho, abyste se naučili jinou syntaxi - prostě nebudete mít k těmto funkcím přístup.

"Oh My ZSH" je nástroj, který vám pomůže snadněji povolit zsh plug-iny a přepínat mezi premade themes, rychle přizpůsobit váš shell zsh, aniž byste museli trávit hodiny vylepšením.

Existují i ​​jiné shelly. Například, tcsh shell je stále kolem a je stále volbou. FreeBSD používá tsch jako výchozí kořenový shell a popel jako výchozí interaktivní shell. Používáte-li programování C pravidelně, může být tsch vhodnější pro vás. Nicméně, není to tak blízko, jak se běžně používá jako bash nebo zsh.

Jak přepínat mezi Shells

Je snadné přejít na nový shell a vyzkoušet to. Stačí nainstalovat shell z správce balíčků distribuce systému Linux a zadejte příkaz pro spuštění shellu.

Například řekněme, že chcete zkusit zsh na Ubuntu. Byl byste spustit následující příkazy pro instalaci a spustit:

sudo apt nainstalovat zsh zsh

Pak byste seděli v zsh shellu. Zadejte příkaz "exit" na shellu, abyste ho opustili a vrátili se do stávajícího shellu.

Toto je jen dočasné.Kdykoli otevřete nové okno terminálu nebo se přihlásíte do systému na příkazovém řádku, zobrazí se výchozí shell. Chcete-li změnit schránku, kterou vidíte při přihlašování do vašeho přihlašovacího shellu, můžete obvykle použít příkaz chsh nebo "Change Shell".

Chcete-li použít tento příkaz, musíte nejprve najít úplnou cestu k shellu s příkazem.Řekněme například, že jsme se chtěli změnit na shell zsh. Spustili bychom následující příkaz:

který zsh

Na Ubuntu to nám říká, že binární zsh je uložen v /usr/bin/ zsh.

Spusťte následující příkaz, zadejte své heslo a budete vyzváni k výběru nového přihlašovacího shellu:

chsh

Podle výše uvedeného příkazu bychom zadali /usr/bin/ zsh. Zsh shell by pak byl náš výchozí, dokud jsme spustili příkaz chsh a změnili jej zpět.