Historie (získaná ne výzkumem, ale tím, že trávíte příliš mnoho času s lidmi z Bell Labs):
-
Na začátku (pokud za začátek považujete Unix verze 7) byl Bourne shell. Steve Bourne byl první, kdo ukázal, že shell, který řídil interakci uživatele, může být uživatelský program a ne speciální část operačního systému. Historický průlom. Samotný shell byl pro skriptování relativně čistý, ale neměl žádné úpravy z příkazového řádku ani ovládání úloh. Bourneův Úvod do Unix Shell je i dnes užitečný pro začínající uživatele.
Upravit :Ignoroval jsem nějakou "prehistorii" od Kena Thompsona a Johna Masheyho, také z Multics. Jsem si jistý, že Bourne věděl o celé této práci (byl ve stejné laboratoři, 1127, v Bellových laboratořích), ale Bourneova skořápka byla definitivní a dřívější práce měla jen malý vliv, kromě toho, jak ji interpretoval Steve Bourne. Například, ačkoli Ken později napsal kompilátor Plan 9 C a byl velmi vlivný na Plan 9, ale článek Toma Duffa o shellu Plan 9 (rc) zmiňuje pouze Bourneův shell, nikoli Thompsonův.
-
Shell je pouze uživatelský program, takže jej může napsat kdokoli. Zatímco verze 7 Unix byla vytvořena v New Jersey, Berkeley Unix byl vytvořen v Kalifornii. Bill Joy z Berkeley napsal
05
, C shell. Joy přidal ovládání úlohy a historii a později úpravy z příkazového řádku, ale nevěděl o Bourneově práci, a tak založil svůj jazyk na Thompsonově shellu (který jsem v předchozí odrážce považoval za „prehistorický“). Unixová komunita milovala kontrolu práce, ale také milovala Bourneův jazyk. Nepříliš dobrou polemiku proti jazyku csh najdete v článku Programování Csh považované za škodlivé. Po určitou dobu mnoho lidí používalo15
interaktivně pro své funkce řízení úloh a historie, ale použil Bourneův22
psát scénáře. Tato situace byla méně než ideální.Upravit :Děkuji společnosti DigitalRoss za upřesnění v chronologii
36
. Vzhledem k tomu, že jsem získal vzdělání od lidí, kteří o BSD mluví jako o „berkeleyské herezi“, chyběla mi tam fakta. -
Dave Korn v Bell Labs provedl brilantní přepracování Bourne shellu na výrobu Korn shellu (ksh). Byl plně zpětně kompatibilní s Bourne shell
44
ale poskytla spoustu neocenitelných vylepšení.53
se stal základem standardu POSIX a byl standardně dodáván se softwarem Sun. (A to navzdory skutečnosti, že Bill Joy opustil Berkeley, aby pomohl založit Sun a byl jedním z jejich předních softwarových kluků.) -
Bell Labs a AT&T hloupě nedokázali vyrobit
65
open source.77
je široce používán, ale mít zdroje není legální. Někteří lidé se stanou tak závislými, že se stanou digitálními zločinci.Upravit :Bylo to opravdu tak hloupé? Těžko vědět. Berkeley už Unix dával pryč a další korporace měly brzy následovat, ale to byla ještě éra, kdy Corporate Masters věřili ve zpoplatnění Unixu. Ale výsledky:AT&T Unix je mrtvý poté, co byl mnohokrát prodán různým stranám. BSD a jeho deriváty jsou naživu a dobře, ale tyto povýšené věci zvané „Linux“ a „GNU“ mají obrovský zlomek sdílení mysli, který kdysi patřil Bell Labs.
-
Free Software Foundation dělá "čistou místnost", od nuly implementaci shellu POSIX, přičemž bere všechny nápady Davea Korna jako aktuální, plus v obvyklém stylu FSF přidává nové vlastní funkce, jako je programovatelné dokončování. Říkají tomu shell "Bourne again" neboli
84
. -
V polovině 90. let AT&T open-sources
94
, ale v té době je příliš pozdě na široké přijetí. Licenční smlouva je podivně nestandardní.102
a119
divergovat a124
nikdy nedosáhne podílu na trhu úměrného svému místu v historii.
Lekce:
-
První adekvátní produkt na trhu vyhrává (sh).
-
Lidé milují nové funkce (ovládání úloh, dokončování příkazů), ale milují je ještě víc, když jejich staré skripty nadále fungují.
-
Upravit :Profesoři inženýrství by měli přenechat historii historikům vědy :-)
Bash má dvě zcela odlišné věci.
-
Je to pěkná skořápka. Je to jeden z možná 2 shellů (druhý je zsh), které integrují některé skvělé
138
funkce jako141
substituce historie do syntaxe posix. Má spoustu rozšíření, včetně polí. -
Je to FSF/GNU shell. Ve světě s otevřeným zdrojovým kódem to dává jakousi výhodu.
Měl bych také dodat, že to není vždy výchozí nastavení. 154
se často používá jako /bin/sh, takže zatímco 160
může být interaktivní shell, 173
je shell "stačí spustit příkazový soubor". Důvodem je 181
je menší a rychlejší a obsahuje funkce posix, takže je to správná podmnožina. Pomocí 191
jako interaktivní shell je někdy problematický. Na, řekněme, NetBSD to funguje dobře, protože tam má všechny funkce. Je to jakýsi jejich jeden shell, zatímco 206
je externí balíček. Ale na Linuxu 214
je obvykle považován za neinteraktivní, takže jej zkompilují bez historie a bez (důležité) úpravy řádků na základě teorie, že se používá pouze ke spuštění těch obrovských 224
skripty.
Příběh dvou mušlí
Skutečná historie shellu
AKTUALIZACE: Historie kopírování shellu z místa na místo na webu je nepřesná a lidé tomu pochopitelně věří. Pokusím se poskytnout přesnou verzi a poskytnu zde několik odkazů, které ji doloží.
- První shell zcela jistě nebyl Bourne shell, ale byl napsán samotným Kenem Thompsonem a distribuován ve V6, což je verze, kterou AT&T poslala různým univerzitám a vládním laboratořím. To je to, co dostalo Unix na mapu. Měl všechny základy,
232
, ale měl jednoduchý246
ovládání syntaxe přes externí program, který hledal na standardním vstupu. Tehdy neexistovaly žádné složité shellové skripty. Pozdější shelly by otevřely vstup příkazu na samostatném fd. Dnes to může vypadat jednoduše, ale v hororovém filmu, který byl v sedmdesátých letech minulého století, to byla ta nejlepší věc na světě. Věřte nebo ne, tato prastará skořápka má dnes svůj vlastní twitterový stream a samozřejmě i domovskou stránku. - Druhý shell byl
255
, zapsaný (jako byl260
) od Billa Joye z UCB. To bylo před GNU readline a NetBSD editline, takže se muselo zdát naprosto rozumné udělat historii s274
syntax. Csh přidal většinu dnešních funkcí shellu, ale se syntaxí csh. Csh nezměnil žádnou syntaxi , bezúplatně nebo jinak. Ve skutečnosti byl zpětně kompatibilní s prostředím Thompson a původně obsahoval zdrojový kód TS. - Třetím shellem byl Bourne shell s jinou syntaxí. Unix byl vyvíjen paralelně v UCB a AT&T. Tento shell měl podivný alokátor paměti (myslím, že jen spotřeboval více paměti, zachytil SIGSEGV, provedl nový brk(2) a pak to zkusil znovu), což znesnadňovalo spuštění na nových unixových portech, takže
289 a
290
zůstal nějakou dobu populární. Nebyl tam internet a byl to licencovaný SW, takže v tomto prostředí je možné, že Stephen Bourne nevěděl o Joyině skořápce a Joy určitě nevěděla o Bourneovi. Je možné, že se tyto dva shelly poprvé setkaly, když UCB dostalo VAX a předběžnou verzi nyní zapomenutého Unixu/32V. Pamatuji si, jak si Bill stěžoval na přidělení paměti. Všimněte si, že oba shelly byly zpětně kompatibilní s shellem V6 , jednoduše rozšířili syntaxi v různých směrech. - Teď skutečně existovalo několik nekompatibilních shellů, ke kterým AT&T přidalo Bourne kompatibilní
309
. Nakonec311
měl částečně dostupný zdrojový kód, ale byl svázán v soudním sporu mezi AT&T a University of California. Přesto to byly časy slávy BSD Unix, protože sofistikované společnosti, které si mohly dovolit poplatek 50 000 USD, si koupily licenci AT&T, ale nainstalovaly distribuce 4.x BSD a univerzity to dostaly zdarma. - V této situaci s mnoha právními a technickými problémy byly provedeny různé nezávislé implementace. Alespoň tolik jich šlo s
322
syntaxe jako u syntaxe Bourne shellu a někteří je sloučili. Měli jste alespoň335
,349
,359
a361
. Bourneova syntaxe byla „oficiální“ a byla součástí vydání AT&T, ale v té době bylo BSD docela důležité a Sun, původně BSD, distribuoval značné množství unixového SW, se kterým se svět setkal. - Částečně kvůli soudnímu sporu USL měly FSF a Linux otevřené pole. Mezitím se AT&T podařilo utkat se s jednou z mála entit na zemi větším, než byly (stát Kalifornie), a nakonec spor nevyhráli, takže distribuce BSD byla nakonec pevně legální. základ. Ale tou dobou už byly Linux a bash všude, a tak je dnes BSD výklenek.
- Konečně, bash je dobrá skořápka (ačkoli ji její původní autor zjevně soukromě popřel) a plně si zaslouží uznání za svůj vlastní úspěch. csh by byly zastíněny tcsh a zsh, i kdyby ash, bash a ksh nevyhrály válku o syntaxi.
Chcete-li přidat k tomu, co řekl @DigitalRoss
- Bash je úplnou náhradou nadmnožiny za posix-sh, dokonce i do té míry, že pokud je zavolán jako /bin/sh, bude posix-sh zcela emulovat. Posix-sh byl „standard“ pro komerční unixové systémy jako shell společného jmenovatele. Takže něco, co tam začíná a staví na tom, začíná hodně.