GNU/Linux >> Znalost Linux >  >> Linux

Jaké jsou základní rozdíly mezi mainstreamovými *nix shelly?

Zavřeno . Tato otázka musí být více zaměřena. Momentálně nepřijímá odpovědi.

Chcete zlepšit tuto otázku? Aktualizujte otázku tak, aby se zaměřila pouze na jeden problém úpravou tohoto příspěvku.

Zavřeno před 6 lety.


Vylepšete tuto otázku

Jaké jsou zásadní rozdíly mezi mainstreamovými *NIX shelly a jaké scénáře vás mohou vyzvat k použití jednoho přes druhého? Chápu, že některé z toho pravděpodobně závisí na preferencích uživatele, ale já jsem vždy používal pouze Bash a zajímá mě, kde by mohl být užitečný jiný shell.

Má také vliv na uživatelem psané skripty shellu, když běží pod jedním nebo druhým shellem, nebo je to prostě záležitost změny shellu v horní části souboru? Můj instinkt říká, že to není tak snadné.

Přijatá odpověď:

Pro interaktivní použití existují dva hlavní soupeři, Bash a zsh, plus opozdilý tcsh a nováček fish.

  • Bash je oficiální shell projektu GNU a výchozí shell na většině distribucí Linuxu. Na jiných unicích, které se nedodávají se slušným interaktivním shellem jako součást základní instalace, si myslím, že Bash je to, co mají lidé tendenci volit, ve smyčce „Bash je všude, takže ho použiju taky“. Viz také Proč je všude Bash? (se spoustou historických informací).

  • Zsh má téměř všechny funkce Bash a mnoho dalších (užitečných!) funkcí. Jeho hlavní nevýhodou je, že je méně známý, což z praktického hlediska znamená, že je méně pravděpodobné, že jej již nainstalujete v systému, který nastavil někdo jiný, a existuje o něm méně dokumentace třetích stran. Viz také Jaké funkce zsh používáte?, Jaké funkce jsou v zsh a chybí v Bash, nebo naopak?, Jaké jsou praktické rozdíly mezi Bash a Zsh?.

  • Tcsh byl kdysi (až do počátku 90. let) shellem s nejlepšími interaktivními funkcemi, jako jeho předchůdce csh. Díky tomu byl populární pro interaktivní použití (ale ne pro skriptování). Zsh dohonil tcsh a poměrně rychle se dále zlepšoval a Bash ho dohnal (s programovatelným dokončením) na začátku 21. století, zatímco tcsh za posledních 15 let téměř neudělal žádný pokrok. Proto je jen málo důvodů učit se tcsh nyní.

  • Fish se snaží být čistší než jeho předchůdci. Má některé vychytané funkce (jednodušší syntaxe, zbarvení syntaxe na příkazovém řádku), ale postrádá jiné (co se autorovi nelíbí). Rybí komunita je mnohem menší než komunita zsh, takže účinky jsou ještě akutnější.

Pro skriptování existuje několik jazyků, na které byste se mohli chtít zaměřit v závislosti na tom, jak přenosné chcete skripty mít.

  • Cokoli, co se tváří jako Unix, má shell odvozený od Bourne jako /bin/sh . Kolem /bin/sh stále existují nějaké komerční uniky není kompatibilní s POSIX.

  • Téměř každý nyní běžící unix má sh spustitelný soubor, který je alespoň v souladu s alespoň POSIX.2-1992 a obvykle alespoň s POSIX:2001 aka Single Unix v3. Tento shell může žít v jiném adresáři, jako je /usr/bin/posix nebo /usr/xpg6/bin . Vrstvy emulace POSIX také existují pro téměř každý systém, který je dostatečně výkonný, aby jej podporoval, což z něj činí atraktivní cíl.

  • Mnoho unixových systémů má ksh93, což přináší některé velmi užitečné funkce, které POSIX sh postrádá (pole, asociativní pole, rozšířené globy (*(foo) , @(foo|bar) , …), null globs (~(N)foo* ), …). Ksh byl zpočátku komerční software (zdarma se stal v roce 2000, poté, co se usadily některé zvyky), a mnoho svobodných unices (Linux, *BSD) si zvyklo poskytovat pouze mnohem starší bezplatný klon (pdksh), který postrádal mnoho z těchto užitečných funkcí. . Pdksh je nyní nahrazován mksh mimo OpenBSD, ale ani mksh nedosahuje implementace všech funkcí ksh93. Dnes nemůžete počítat s tím, že ksh93 bude k dispozici všude, zvláště na Linuxu, kde je standardem Bash.

  • Bash je vždy k dispozici na Linuxu (kromě některých vestavěných variant) a často na jiných unicích. Má většinu užitečných funkcí ksh93, i když někdy s jinou syntaxí.

  • Zsh má většinu užitečných funkcí ksh93 a Bash. Jeho základní syntaxe je čistší, ale nekompatibilní s Bournem. S výjimkou macOS nepočítejte s tím, že zsh bude k dispozici na systému, který jste nenainstalovali.

  • Pro pokročilejší skriptování se můžete obrátit na Perl nebo Python. Tyto jazyky mají správné datové struktury, slušné funkce pro manipulaci s textem, slušnou kombinaci procesů a komunikační mechanismy a spoustu dostupných knihoven. Většina unixových systémů je má, buď přibalené k OS, nebo nainstalované administrátorem (protože existuje tolik skriptů Perl a Python, že jde o vzácný systém, který nemá alespoň jeden od každého).

Související:Invertovat výsledky pro „for in * do“-loops?
Linux
  1. MySQL vs. MariaDB:Jaké jsou hlavní rozdíly mezi nimi

  2. Co jsou oddělovače slov Readline?

  3. Router pfSense vs Netgear:Jaké jsou hlavní rozdíly?

  1. Fedora vs Ubuntu:Jaké jsou klíčové rozdíly?

  2. Jaké jsou rozdíly mezi soubory .txt pro Linux a Windows (kódování Unicode)

  3. Jaký je rozdíl mezi &> a >&v bash?

  1. Debian vs Ubuntu:Jaké jsou rozdíly?

  2. Jaké jsou hlavní rozdíly mezi Bsd a Gnu/linux Userland?

  3. Jaké jsou rozdíly mezi rdesktop a xfreerdp?