Básicamente, una shell (la traducción al pie de la letra de caparazón o concha no parece muy adecuada) es un procesador de órdenes que sirve para ejecutar comandos. En un principio, cuando no había entornos de ventanas, era la forma de poder comunicar nuestras órdenes al sistema operativo. Además de para ejecutar comandos, la shell de Unix/Linux sirve como lenguaje de programación y para combinar comandos, formando otros más complejos.
Específicamente, bash (la shell que presenta Linux por defecto) es un intérprete de un lenguaje de órdenes compatible con sh (una shell anterior) que ejecuta órdenes leídas desde la entrada estándar1.1 o desde un fichero. Bash también incorpora características útiles tomadas de otras shells como la Korn y la C shell (ksh y csh).
El nombre de bash viene de Bourne Again Shell1.2. Bash está pensado con la intención de ser una implementación conforme con la especificación POSIX de Shell y Herramientas, de la IEEE (Grupo de Trabajo 1003.2 de la IEEE).
Ya que hemos mencionado POSIX, debemos decir que es un estándar1.3 (normas escritas en papel, para que lo veamos de una forma más práctica) que pretende definir un Sistema Operativo Abierto1.4 definido por la IEEE (que es una organización internacional de estándares). Linux intenta cumplir con los estándares POSIX.
Para poder estudiar más sobre la shell bash: