À l'époque, quand AT & T avait inventé UNIX, il y avait Bourne Shell, écrit par Steve Bourne. C'était assez basique et il manquait beaucoup d'outils que nous prenons pour acquis de nos jours.
AT & T ne faisant pas vraiment partie du marché UNIX, Berkelely a adopté à l’époque un système d’exploitation très basique qui a apporté quelques modifications à BSD UNIX. Parmi de nombreux changements, il y avait un nouveau shell, appelé csh, qui présentait de nombreuses améliorations par rapport à sh, notamment un meilleur contrôle du travail, une utilisation interactive, etc. Malheureusement, ils ont décidé que la syntaxe de programmation sh était nulle et ils ont créé leur propre copie (quelque peu mal) des styles de codage C. (Un coup de gueule classique est http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ ) Il y avait donc maintenant deux syntaxes.
Plus tard, ils ont apporté des améliorations à CSH en ajoutant la complétion par des onglets et d'autres éléments. Ceci est devenu tcsh, et si vous utilisez CSH, c'est probablement celui que vous utilisez.
AT & T a décidé que ce n’était pas totalement une entreprise UNIX et l’a perfectionné. David Korn (un gars sympa) a créé la coque Korn. Basé sur l'idée d'étendre la syntaxe du shell Bourne, il a ajouté beaucoup de choses pour les programmeurs et l'utilisation interactive. Il existe en fait quelques versions et vous verrez rarement des éléments tels que ksh88 et ksh93, indiquant les variantes.
Viennent ensuite la FSF et le système d’exploitation GNU. Ils voulaient créer leur propre système d’exploitation compatible avec UNIX, le Hurd, et souhaitaient un meilleur shell. Ils ont appelé bash, pour Bourne Again SHell. Les règles POSIX sont entrées à peu près à la même époque et ils voulaient créer le shell POSIX. Ils ont examiné la syntaxe du shell Bourne et les améliorations apportées au shell Korn, ainsi que le vol et l'extension des fonctionnalités interactives de tcsh. C'est devenu le shell de facto sous Linux, donc c'est très courant.
Il y a aussi le zsh, écrit pour être le shell "ultime". C'est aussi très courant dans le monde Linux. Il a étendu bash (et un peu pollinisé, quelques nouvelles choses sont retournées à bash).
Si je devais choisir un shell, je choisirais bash ou zsh. bash est peut-être dans quelques endroits plus nombreux que zsh. zsh est plus puissant, mais bash me convient. Le shell Bourne réel / bin / sh est disponible uniquement pour des raisons historiques. bash a à peu près tout ce que ksh a à offrir et plus encore. La syntaxe est plus propre que csh ou tcsh et offre de meilleures fonctionnalités que l'une ou l'autre.
Convertir un script dépend de quoi à quoi. Le style de shell Bourne (sh, ksh, bash, zsh) vers ou depuis le style csh (csh, tcsh) sera difficile. Passer de l'ancien au plus récent (/ bin / sh => bash, / bin / ksh => zsh) sera plus facile que l'inverse.