Ai vecchi tempi, quando AT&T inventò UNIX, c'era Bourne Shell, scritta da Steve Bourne. Era piuttosto semplice e mancava un sacco di strumenti che diamo per scontati al giorno d'oggi.
AT&T non era realmente nel settore UNIX, quindi in questo momento il sistema operativo di base era stato adottato da Berkelely in qualche modo e hanno apportato alcune modifiche a BSD UNIX. Tra i molti cambiamenti, c'era una nuova shell, chiamata csh, che aveva molti miglioramenti rispetto a sh, incluso un migliore controllo interattivo del controllo del lavoro e così via. Sfortunatamente, decisero che la sintassi di programmazione sh risucchiava e crearono il loro (un po 'male) copiato dagli stili di codifica C. (Un classico rant è http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ ) Quindi ora c'erano due sintassi.
Successivamente, hanno apportato miglioramenti a CSH aggiungendo il completamento della scheda e alcune altre cose. Questo è diventato tcsh e se usi CSH, questo è probabilmente quello che usi.
AT&T ha deciso che non era totalmente fuori dal business UNIX e hanno anche risolto il problema. David Korn (bravo ragazzo) ha creato la shell Korn. Basato sull'idea di estendere la sintassi della shell Bourne, ha aggiunto molte cose sia per i programmatori che per l'uso interattivo. In realtà ci sono alcune versioni e raramente potresti vedere cose come ksh88 e ksh93, che indicano le varianti.
Poi sono arrivati FSF e il sistema operativo GNU. Volevano creare il loro sistema operativo compatibile con UNIX chiamato Hurd e volevano una shell migliore per questo. Hanno chiamato bash, per Bourne Again SHell. Le regole POSIX sono arrivate proprio in questo periodo e volevano creare la shell POSIX. Si sono guardati intorno, prendendo la sintassi dalla shell Bourne e i miglioramenti dalla shell Korn, oltre a rubare ed estendere le funzionalità interattive da tcsh. È diventata la shell di fatto su Linux, quindi è molto comune.
C'è anche lo zsh, scritto per essere la shell "definitiva". È anche molto comune nel mondo Linux. Si estendeva bash (e si impollinava un po ', alcune cose nuove sono tornate a bash).
Se dovessi scegliere una conchiglia, sceglierei bash o zsh. bash è probabilmente in qualche posto in più rispetto a zsh. zsh è più potente, ma bash è andato bene per me. La shell Bourne reale / bin / sh esiste solo per motivi storici. bash ha praticamente tutto ciò che ksh ha da offrire e altro ancora. La sintassi è più pulita di csh o tcsh e presenta funzionalità migliori di una di esse.
La conversione di uno script dipende da cosa a cosa. Lo stile della shell Bourne (sh, ksh, bash, zsh) da o verso lo stile csh (csh, tcsh) sarà difficile. Passare dal vecchio al più recente (/ bin / sh => bash, / bin / ksh => zsh) sarà più facile dell'altro modo.