El
shell (o intérprete de línea de comandos) controla el proceso de interacción entre un usuario y el sistema operativo. Mientras que una interfaz gráfica de usuario (GUI) también facilita esta interacción, es el shell subyacente el que interpreta los comandos de usuario (ya sea escrito o iniciado a través de acciones de GUI) y los traduce en acciones que el sistema operativo puede comprender y ejecutar.