Un shell es un programa que corre entre el núcleo del sistema operativo y el usuario para ayudar a controlar todo el sistema. Es el encargado de recoger todas nuestras peticiones, procesarlas y lanzar los programas necesarios. Es directamente responsable de las cualidades de multitareamultitarea del UNIX. Haciendo una similitud con el MS-DOSMS-DOS, los shells equivalen al intérprete de comandos COMMAND.COMCOMMAND.COM. Como ya indicamos en la sección llamada Lo Básico de UNIX, en las diferentes versiones de UNIX, normalmente nos encontramos con los shells sh , csh y ksh . El uso de uno u otro depende del usuario. sh es sencillo y básico, ksh es el más amplio y csh es el más adecuado para el trabajo interactivo. Posteriormente han aparecido shells mejorados entre los que podemos destacar el bash (Bourne-Again SHell) que es una ampliación del sh con ciertas facilidades de uso añadidas o tcsh que es una mejora de csh. En este apartado estudiaremos dos shells diferentes:
Todos los shells tienen mucho en común, por lo que no son demasiadas las diferencias. Una vez que conocemos uno de ellos, fácilmente migramos hacia otro. Se ha elegido estos dos porque son los más básicos. Conociendo el sh no tendremos problemas cuando migremos hacia ksh o bash y conociendo csh conocemos también tcsh . Existe además un shell llamado zsh que está diponible en la mayoría de las distribuciones de Linux. Es básicamente una ampliación de ksh .