Antes, en un primer momento en la historia de Unix o Linux, se manejaban solamente con texto, no había un entorno gráfico, tipo windows, para manejarse por estos sistemas operativos. Se ingresaban órdenes y el sistema la ejecutaba. A esto se le llama intérprete de comandos: por ejemplo se introducía la palabra dir y el sistema lo ejecutaba mostrándonos los directorios. Estamos hablando de el Shell.

Si bien ahora las distintas distribuciones de Linux tienen un entorno gráfico, lo cuál hace que este sistema operativo sea más amigable, es importante que conozcamos de qué se trata las diferentes shell y sus comandos, porque muchas veces deberemos recurrir a la consola, o en el caso de que por algún motivo no pueda iniciarse Linux en forma gráfica, tendremos que averiguar cuál es el problema, tecleando diferentes órdenes de comando. Así que vamos a ello:
* El shell no es más que el intérprete de comandos, un programa del sistema que nos va a permitir comunicarnos con la máquina ordenándole cosas.
* Se conoce con el nombre de Shell al programa que atiende a los ordenes tecleadas en el terminal y las traduce (interpreta) a instrucciones en la sintaxis interna del sistema; es decir es él interprete de comandos del sistema operativo UNIX/LINUX.
* El shell es un programa del sistema operativo, pero no forma parte del núcleo del mismo. Se ejecuta cada vez que un usuario se identifica ante el sistema y comienza una sesión.
* A los programas realizados con el shell se les llama Shell Scripts, Procedimientos Shell o Guiones de Comando.
* Se lo llama "shell" porque oculta los detalles del sistema operativo subyacente detrás de la interfaz del shell (en contraste con el núcleo o kernel, el cual se refiere a los componentes de nivel más bajo del sistema operativo). Similar a las interfaces de usuario gráficas para Unix, como son GNOME, KDE y Xfce pueden ser llamadas shells visuales o shells gráficas.
Los shell en Unix se clasifican en dos grandes grupos: los tipo Bourne y los tipo C. Los shell tipo Bourne toman su nombre a partir de su inventor, Steven Bourne. Steven Bourne escribió el shell original de Unix, denominado sh; a partir de entonces, la mayoría de los shells tienen un nombre con el sufijo sh para indicar que son extensiones de la idea original. Existen varias implementaciones de este shell, que colectivamente llevan el nombre de shells Bourne. También son comunes los shells tipo C cuyo original fue implementado por Bill Joy. Tradicionalmente, los shell Bourne se han utilizado para los scripts de shell y por razones de compatibilidad con el sh original, mientras que los shells C han sido más comunes en su aplicación interactiva. (Los C tienen ventajas en cuanto a sus mejores características interactivas, aunque son más difíciles de programar)
Linux viene con un shell Bourne denominado bash, escrito por la organización "Free Software Foundation" (Fundación para el Software Libre). El nombre bash proviene de Bourne Again SHell, uno de los tantos juegos de palabras en Unix. Se trata de un shell Bourne "avanzado": tiene las capacidades estándar de programación que se encuentran en todos los shells Bourne y además varias de las características interactivas que se encuentran en los shells C. bash es el shell predeterminado de Linux.

Una tabla resumen de los distintos shells podría ser:
Programa Intérprete
sh Bourne Shell
tcsh C Advanced Shell
ash Shell reducido
zsh Z Shell
bash Bourne Again Shell
csh C Shell
ksh Korn Shell
pdksh Public Domain Korn Shell
El Bourne Shell es el intérprete de comandos fundamental en todo sistema Unix, ofreciéndose siempre de serie. Sabremos que lo estamos utilizando porque su indicador, su prompt, será el símbolo `$’ (aunque éste símbolo corresponde también al Bourne Again Shell, y además es fácilmente modificable por el usuario).
El Korn Shell es una extensión del Bourne Shell, que mejora a éste último. Todo lo que funcione con sh lo hará tambin con ksh. Sus prestaciones son similares al C Shell, incorporando histórico de órdenes, control de tareas y creación de aliases.
En el próximo artículo, hablaremos en detalle de bash.


[...] El Shell de Unix – Linux share this [...]