Um shell, na terminologia de computação, é a camada mais externa do sistema operacional, isto é, a parte do sistema operacional com a qual o usuário interage. (Veja também a excelente exposição sobre Superusuário do JdeBP.) Assim, no Windows, o shell típico é o Explorer (que gerencia a área de trabalho); no Mac OS em suas várias encarnações, é o localizador; em sistemas no estilo Unix, é o que o usuário configurou como a interface principal do sistema (pode ser /bin/bash
, ou /bin/ksh
, ou algum outro /bin/*sh
em um console, ou GNOME, ou Looking Glass ou CDE ou twm
, a lista continua e continua).
No entanto, muitos leitores se referem ao POSIX, onde o shell tem uma definição específica :
The shell is a command language interpreter.
... com sintaxe e comandos específicos, todos definidos em POSIX e estendidos por implementações de shell comuns hoje em dia.
Ambas as categorias de shell usam o mesmo tipo de método para interagir com o kernel, pelo menos em sistemas no estilo Unix: eles finalmente usam chamadas de sistema, embora geralmente envolvidas por algum tipo de biblioteca (a biblioteca C). Essa é a interface de comando central entre o kernel e todos os programas em execução, incluindo shells de vários tipos: Bash usa chamadas do sistema, o GNOME Shell usa chamadas do sistema, Nautilus usa chamadas do sistema, etc. Uma GUI pode ser implementada inteiramente sem usar /bin/sh
. / p>
(Tudo isso acaba sendo um pouco confuso quando se percebe que vários componentes de uma GUI típica podem ser implementados usando ferramentas diferentes, incluindo, é claro, o shell “CLI” - então normalmente há partes de uma GUI do Linux implementada usando /bin/sh
, mas eles não têm para ser.)