3.1 ¿Qué es la shell?
Hablando de forma genérica, la shell es cualquier interfaz del sistema UNIX, que coge de la entrada estándar las instrucciones introducidas por el usuario, las traduce a instrucciones que el sistema operativo es capaz de interpretar, y devuelve generalmente por la salida estándar, los resultados de las instrucciones que el sistema ha ejecutado.
El trabajo básico de la shell es traducir las instrucciones que se introducen en la linea de comandos en instrucciones que el sistema operativo sea capaz de entender. Depende de cómo se realice esta tarea y de las características que éste ofrezca al usuario para realizar una tarea, una shell será más potente que otra si el usuario es capaz de introducir la misma tarea de una forma más rápida que en otra.
3.2 Historia de las Shells de UNIX
La independencia de la shell respecto al sistema operativo, ha permitido desde los primeros pasos de UNIX, la creación de múltiples de shells, aunque solo algunas han conseguido un uso "popular".
La primera shell más importante fue la Bourne shell, nombre que adquirió de su creador Steven Bourne. Ésta fue incluida en la primera versión popular de UNIX, la Versión 7, sobre el año 1987. El nombre que recibe la Bourne en el sistema operativo es sh. A pesar de los cambios que UNIX pueda haber sufrido, la shell Bourne sigue siendo una de las más populares, dependiendo hoy en día de ella gran cantidad de utilidades.
La primera gran alternativa a esta shell fue la C shell, o también csh. Su creador, Bill Joy en la Universidad de California en Berkeley, la escribió como una parte del Berkeley System Distribution (BSD), versión de UNIX que salió un par de años después de la versión 7. Esta shell está incluida en todas las versiones de UNIX más recientes.
La C shell recibe su nombre debido a la semejanza de sus comandos a las instrucciones del lenguaje C, lo cual hace a la shell más fácil de aprender para los programadores.
En los últimos años han continuado surgiendo diversas shell, cuya popularidad ha ido en aumento. La más notable es la Korn shell, la cual incorpora las mejores cualidades de la shell Bourne y de la C. El único inconveniente de esta shell es que se distribuye de forma comercial. Debido a esta característica otra shell ha tenido un mayor auge, la bash shell, de características semejantes a la korn, pero de distribución gratuita.
3.3 The Bourne Again Shell
La Bourne Again Shell, o también bash, fue creada para uso del proyecto GNU. La intención era que bash fuera la shell estándar de sistema GNU. Su "nacimiento" fue el Domingo 10 de Enero de 1988, y su creador fue Brian Fox, el cual continuó con el desarrollo de esta shell hasta 1993. En 1989 Chet Ramey fue el encargado de numerosas correcciones en la shell, e incluyó muchas nuevas características a ésta, convirtiéndose en el desarrollador oficial a partir de 1993
La principal característica de esta shell, y seguramente, la que le ha dado un mayor auge, al menos en un primer golpe, es el modo de edición en linea de comandos. Con este modo es mucho más fácil volver atrás y corregir errores de escritura en los comandos en vez que tenerlos que volver a introducir completamente. La otra gran ventaja de esta shell frente a las otras es el control del trabajo, con lo que el usuario es capaz de parar, comenzar y pausar cualquier numero de comandos a la vez.
El resto de características de esta shell, son, en su mayoría, para programadores, como por ejemplo la inclusión de nuevas variables para la personalización del entorno, instrucciones avanzadas de I/O o mayor cantidad de estructuras de control, entre otras muchas. Todas estas cualidades sobre la shell Bash, pueden encontrarse en el libro [NR95], que trata todos estos aspectos y muchos más, incluyendo programación en Shell Script, o uso de características avanzadas de esta potente shell.