Četl jsem mnoho článků, které říkají, že oficiální shell ve FreeBSD je tcsh
a v Debianu jeho dash
. Když však buď echo $shell
(FreeBSD) nebo env
v Debianu to říká, že shell je csh
v prvním případě nebo bash
v Debianu.
To je v čerstvých instalacích. Testoval jsem pod účtem root a normálním uživatelským účtem. Také, když vytvořím nový účet ve FreeBSD, mám na výběr ze 3 shellů; sh
, csh
nebo tcsh
. Pokud neudělám žádnou volbu, csh
je výchozí pro účet.
Jaký je oficiální standardní shell v těchto systémech? Je to tcsh
nebo csh
ve FreeBSD? Je to dash
nebo bash
v Debianu?
Dělám něco špatně já? Nebo jsou články a stránky dezinformovány?
Chci se naučit dva shelly:jeden pro Debian a jeden pro FreeBSD, ale nemůžu najít, který bych se měl naučit, protože není jasné, který je oficiální shell.
Také, když jsem hledal, který shell bych se měl naučit, našel jsem toto:http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/
Je to někdo, kdo prostě nemá rád csh
, nebo bychom se měli opravdu vyhnout csh
?
Používám nejnovější verze Debianu a FreeBSD.
Začínám se ztrácet se všemi těmito možnostmi shellu, všechny mi připadají stejné (kromě syntaxe; chci říct, že všechny nabízejí stejné možnosti). Proto se chci naučit ten oficiální.
Přijatá odpověď:
Není vůbec potřeba, abyste používali výchozí shell pro daný systém. Debian i FreeBSD poskytují řadu různých shellů a většina nebo všechny z nich jsou dostupné v obou, buď předinstalované, nebo snadno instalovatelné.
Pozor na pojmenování. Pro /bin/csh
to není neobvyklé být skutečně tcsh, nebo pro /bin/sh
být bash nebo ksh.
sh
, Bourne shell, je nejstarší unixový shell, který se stále běžně používá. bash
je pravděpodobně nejpoužívanější derivát sh; ksh
a zsh
jsou také rozšířené.
csh
, shell C, byl vyvinut pro BSD Billem Joyem. Má některé funkce, které umožňují pohodlnější interaktivní použití než sh
(nebo alespoň než stará verze sh
které v té době existovaly). tcsh
je odvozeno z csh
a přidává spoustu nových funkcí, z nichž většina je zaměřena na interaktivní použití. Jak jste viděli při čtení csh.whynot, csh a tcsh mají určité problémy, pokud jde o jejich použití pro skriptování na rozdíl od interaktivního.
Osobně jsem začal s csh a poté, když byl k dispozici, přešel na tcsh. Csh nyní používám ke skriptování jen zřídka, preferuji sh nebo bash (nebo Perl pro cokoliv přiměřeně složitého).
Související:Možnost -F pro ls?(Aktualizace o několik let později:Od té doby jsem opustil tcsh a nyní používám bash interaktivně.)
Moje rada by byla vybrat si jeden shell a dobře se ho naučit, používat ho na FreeBSD i na Debianu. Pokud zvolíte tcsh, myslím, že jej budete muset nainstalovat na Debian:sudo apt-get install tcsh
. Pokud zvolíte bash, nevím, zda je předinstalovaný na FreeBSD; pokud tomu tak není, mělo by být stejně snadné jej nainstalovat.
Není nutné používat stejný shell interaktivně a pro skriptování, ale může se vyhnout zmatkům a zkrátit dobu učení.
ksh je pravděpodobně stejně výkonný jako bash a zsh je ještě výkonnější (a má spoustu funkcí, které jsem si nikdy nenašel čas se naučit).
Doporučuji bash jak pro FreeBSD, tak pro Debian (a pro jakékoli jiné unixové systémy, které byste mohli používat), a pro interaktivní použití i skriptování. Ale jiné možnosti jsou naprosto legitimní a některé vám mohou vyhovovat lépe.