En los viejos tiempos, cuando AT&T inventó UNIX, estaba Bourne Shell, escrito por Steve Bourne. Era bastante básico y carecía de muchas herramientas que damos por sentado hoy en día.
AT&T no estaba realmente en el negocio de UNIX, por lo que en este momento Berkelely adoptó el sistema operativo muy básico, e hicieron algunos cambios en BSD UNIX. Entre muchos cambios, había un nuevo shell, llamado csh, que tenía muchas mejoras sobre sh, incluido el control del trabajo, un mejor uso interactivo, etc. Desafortunadamente, decidieron que la sintaxis de programación sh apestaba y crearon la suya, (algo mal) copiada de los estilos de codificación C. (Una diatriba clásica es http://www.faqs.org/faqs/unix-faq/shell/csh-whynot/ ) Así que ahora había dos sintaxis.
Más tarde, realizaron mejoras en CSH agregando la finalización de pestañas y algunas otras cosas. Esto se convirtió en tcsh, y si usa CSH, este es probablemente el que usa.
AT&T decidió que no estaba totalmente fuera del negocio de UNIX, y también lo pulieron. David Korn (buen tipo) creó el shell Korn. Basado en la idea de extender la sintaxis de shell Bourne, agregó muchas cosas tanto para programadores como para uso interactivo. En realidad, hay algunas versiones, y rara vez puede ver cosas como ksh88 y ksh93, que denotan las variantes.
Luego vinieron FSF y el sistema operativo GNU. Querían hacer su propio sistema operativo compatible con UNIX llamado Hurd, y querían un mejor shell para ello. Llamaron a bash, por Bourne Again SHell. Las reglas POSIX aparecieron justo por esta vez, y querían hacer el shell POSIX. Miraron a su alrededor, tomando la sintaxis de Bourne Shell y las mejoras de Korn Shell, además de robar y extender las funciones interactivas de tcsh. Se convirtió en el shell de facto en Linux, por lo que es muy común.
También está el zsh, escrito para ser el shell 'definitivo'. También es muy común en el mundo de Linux. Extendió bash (y polinizó un poco, algunas cosas nuevas volvieron a bash).
Si tuviera que elegir un caparazón, elegiría bash o zsh. bash posiblemente esté en algunos lugares más que zsh. zsh es más poderoso, pero bash ha estado bien para mí. Real / bin / sh Bourne shell está presente solo por razones históricas. bash tiene prácticamente todo lo que ksh tiene para ofrecer y más. La sintaxis es más limpia que csh o tcsh, y tiene mejores características que cualquiera de ellas.
Convertir un script depende de qué a qué. El estilo de shell Bourne (sh, ksh, bash, zsh) hacia o desde el estilo csh (csh, tcsh) será difícil. Pasar de lo antiguo a lo más nuevo (/ bin / sh => bash, / bin / ksh => zsh) será más fácil que a la inversa.