GNU/Linux >> Znalost Linux >  >> Linux

8 typů linuxových shellů

Úvod

Linux přichází s několika různými shelly. Ačkoli má distribuce výchozí shell, uživatelé mohou přejít na jiný typ nebo nainstalovat nový.

Pokud chcete změnit výchozí shell, znalost různých dostupných typů vám pomůže poskytnout jasný přehled možných možností.

Tento článek ukazuje důležitost a funkce osmi různých prostředí Linuxu.

Co je to Linux Shell a proč je důležitý?

shell je program pro interpretaci příkazového řádku, který analyzuje a odesílá příkazy operačnímu systému. Tento program představuje interaktivní rozhraní operačního systému a vnější vrstvu jádra (neboli shell). Umožňuje uživatelům a programům odesílat signály a odhalovat nízkoúrovňové nástroje operačního systému.

Terminálový program (nebo emulátor terminálu) umožňuje interakci s nástroji systému. Když spustíme jakýkoli příkaz v terminálu, jako je ls nebo cat, shell analyzuje, vyhodnocuje, vyhledá a spustí odpovídající program, pokud je nalezen.

Typy linuxových shellů

Linux nabízí různé typy shellů pro řešení různých problémů prostřednictvím jedinečných funkcí. Shelly vyvíjené společně s Unixem si často navzájem vypůjčovaly funkce, jak vývoj pokročil.

Níže je uveden stručný přehled různých typů shellů a jejich funkcí .

1. Bourne Shell (sh)

Bourne shell byl první výchozí shell na unixových systémech, vydaný v roce 1979. Název shellu je sh a tradiční umístění je /bin/sh . Výzva se přepne na $ , zatímco kořenová výzva je # .

Bourne shell se rychle stal populární, protože je kompaktní a rychlé . Nicméně sh postrádá některé standardní funkce, jako například:

  • Logické a aritmetické rozšíření.
  • Historie příkazů.
  • Další komplexní funkce, jako je automatické doplňování.

Moderní systémy podobné Unixu mají /bin/sh spustitelný soubor. Program nespustí Bourne shell, ale chová se jako spustitelný soubor ukazující na výchozí systémové prostředí .

U většiny systémů pevný nebo symbolický odkaz ukazuje na bash , zatímco na Ubuntu a Debianu je odkaz na dash . V obou případech odkaz co nejvíce napodobuje Bourne shell.

2. C Shell (csh)

Skořápka C (csh ) je linuxový shell z konce 70. let, jehož hlavním cílem bylo zlepšit interaktivní použití a napodobit jazyk C. Vzhledem k tomu, že linuxové jádro je převážně napsáno v C, cílem shellu je poskytnout stylistickou konzistenci v celém systému.

Cesta ke spustitelnému souboru C shellu je /bin/csh . Výzva používá % pro běžné uživatele a # pro uživatele root.

Zahrnuty nové interaktivní funkce:

  • Historie předchozího příkazu.
  • Uživatelem definované aliasy pro programy.
  • Relativní domovský adresář (~ ).
  • Vestavěná gramatika výrazů.

Hlavní nevýhody shellu C jsou:

  • Nekonzistence v syntaxi.
  • Žádná podpora standardních vstupních/výstupních (stdio) souborů nebo funkcí.
  • Není plně rekurzivní, což omezuje zpracování složitých příkazů.

C shell zlepšil čitelnost a výkon ve srovnání s Bourne shellem. Interaktivní funkce a inovace v csh ovlivnily všechny následující unixové shelly.

3. TENEX C Shell (tcsh)

Tenex C shell (tcsh ) je rozšířením shellu C (csh ) sloučeny na začátku 80. let. Shell je zpětně kompatibilní s csh, s dalšími funkcemi a koncepty vypůjčenými z TENEX OS.

Cesta ke spustitelnému souboru prostředí TENEX C je v /bin/tcsh . Uživatelská výzva je hostname:directory> zatímco kořenová výzva je hostname:directory# . Starší verze Mac OS a výchozí kořenový shell FreeBSD používají tcsh.

Mezi další funkce shellu patří:

  • Pokročilá historie příkazů.
  • Programovatelné automatické doplňování.
  • Shoda se zástupnými znaky.
  • Kontrola práce.
  • Vestavěný příkaz where.

Protože tcsh je rozšíření shellu C, mnoho nevýhod přetrvává v rozšířené verzi.

4. KornShell (ksh)

KornShell (ksh ) je unixový shell a jazyk založený na Bourne shell (sh) vyvinutém na počátku 80. let. Umístění je v /bin/ksh nebo /bin/ksh93 , zatímco výzva je stejná jako v Bourne shellu ($ pro uživatele a # pro root).

Shell implementuje funkce z C shellu a Bourne shellu s cílem zaměřit se jak na interaktivní příkazy, tak na programovací funkce. KornShell přidává nové vlastní funkce, jako například:

  • Vestavěné matematické funkce a aritmetika s plovoucí desetinnou čárkou.
  • Objektově orientované programování.
  • Rozšiřitelnost vestavěných příkazů.
  • Kompatibilní s Bourne shellem.

Shell je rychlejší než shell C i Bourne shell.

5. Debian Almquist Shell (dash)

Debian Almquist Shell (pomlčka ) je unixový shell vyvinutý koncem 90. let z Almquist shellu (ash), který byl portován do Debianu a přejmenován.

Dash je známý tím, že je výchozím shellem pro Ubuntu a Debian. Shell je minimální a vyhovuje POSIX, takže je vhodný pro spouštěcí skripty OS.

Cesta ke spustitelnému souboru je /bin/dash , kromě /bin/sh ukazující na /bin/dash na Ubuntu a Debianu. Výchozí a uživatelská výzva root je stejná jako v Bourne shellu.

Mezi funkce Dash patří:

  • Provádění je až 4x rychlejší než bash a jiné shelly.
  • V porovnání s alternativami vyžaduje minimální místo na disku, CPU a RAM.

Hlavní nevýhodou je, že dash není kompatibilní s bash. Funkce, které nejsou součástí pomlčky, jsou známé jako „bashismy“. Proto bash skripty vyžadují další přepracování bashismů, aby úspěšně běžely.

6. Bourne Again Shell (bash)

Skořápka Bourne Again je unixový shell a příkazový jazyk vytvořený jako rozšíření Bourne shellu (sh ) v roce 1989. Program Shell je výchozí přihlašovací shell pro mnoho distribucí Linuxu a dřívějších verzí macOS.

Název shellu se zkrátí na bash a umístění je /bin/bash . Stejně jako Bourne shell má bash prompt $ pro běžného uživatele a # pro root.

Bash zavádí funkce, které se nenacházejí v Bourne shellu, z nichž některé zahrnují:

  • Roztažení ortézy.
  • Dokončení příkazu.
  • Základní ladění a zpracování signálů.
  • Historie příkazů.
  • Podmíněné příkazy, jako jsou příkazy bash if a bash case.
  • Podpora Heredoc.

Poznámka: Některé funkce nejsou jedinečné pro Bash, ale spíše vypůjčené z jiných shellů.

Protože bash je nadmnožinou Bourne shellu, většina sh skriptů se spouští v bash bez jakýchkoliv dalších změn.

7. Z Shell (zsh)

Skořápka Z (zsh ) je unixový shell vytvořený jako rozšíření Bourne shellu na počátku 90. let. Shell s bohatými funkcemi si vypůjčuje nápady z ksh a tcsh a vytváří dobře sestavenou a použitelnou alternativu.

Umístění spustitelného souboru je v /bin/zsh . Výzva je [email protected] location % pro běžné uživatele a hostname# pro uživatele root. Shell Z je výchozí shell Kali Linuxu a Mac OS.

Některé nové funkce přidané do zsh zahrnují:

  • Sdílená historie mezi všemi spuštěnými relacemi prostředí.
  • Vylepšené zpracování polí a proměnných.
  • Opravy pravopisu a automatické vyplňování názvů příkazů.
  • Různé režimy kompatibility.
  • Rozšiřitelnost pomocí pluginů.

Shell je vysoce konfigurovatelný a přizpůsobitelný díky podpoře komunity prostřednictvím rámce Oh My Zsh.

8. Friendly Interactive Shell (ryby)

Friendly Interactive Shell (ryby ) je unixový shell vydaný v polovině roku 2000 se zaměřením na použitelnost. Shell s bohatými funkcemi nevyžaduje další konfiguraci, díky čemuž je od začátku uživatelsky přívětivý.

Výchozí cesta ke spustitelnému souboru je /usr/bin/fish . Uživatelská výzva je [email protected] location> , zatímco kořenová výzva je [email protected] location# .

Mezi funkce v shellu patří:

  • Pokročilé návrhy/doplňování karet na základě aktuální historie adresáře.
  • Užitečné zvýraznění syntaxe a popisné chybové zprávy.
  • Webová konfigurace.
  • Historie příkazů s možnostmi vyhledávání.

Hlavní nevýhodou ryb je nevyhovující POSIX. Vývojáři se však snaží vylepšit chybné návrhy z POSIX.

Závěr

Po přečtení několika různých typů shellů v tomto článku získáte lepší přehled o dostupných linuxových shellech. Existují další shelly pro specifické případy použití a každý typ shellu řeší jiné problémy.


Linux
  1. Jaké jsou různé typy shellů v Linuxu?

  2. rbash – Nastavení omezeného prostředí v Linuxu

  3. Příklady příkazů chsh v Linuxu

  1. Jak změnit Shell v Linuxu

  2. Transliterační skript pro linuxové prostředí

  3. Linux =Existuje něco jako Java Shell místo jiných linuxových shellů?

  1. 5 způsobů, jak rozdělit terminál Linux

  2. UNIX / Linux:Co je to Shell? Jaké jsou různé Shelly?

  3. linuxový shell wc -c počet znaků +1