No Linux e no Unix, um shell refere-se a um programa que é usado para interpretar os comandos digitados que o usuário envia ao sistema operacional. A analogia mais próxima no Windows é o prompt de comando do DOS. No entanto, ao contrário do Windows, os computadores Linux e Unix permitem que o usuário escolha qual shell deseja usar.
Bourne Shell
O shell Bourne original recebeu o nome de seu desenvolvedor no Bell Labs, Steve Bourne. Foi o primeiro shell usado para o sistema operacional Unix e foi amplamente superado em funcionalidade por muitos dos shells mais recentes. No entanto, todas as versões do Unix e do Linux permitem que os usuários mudem para o Bourne Shell original, conhecido simplesmente como "sh", se optarem por renunciar a recursos como a conclusão do nome do arquivo e os históricos de comandos que os shells posteriores adicionaram.
Shell C
O shell C, como o próprio nome pode sugerir, foi projetado para permitir que os usuários escrevam programas shell script usando uma sintaxe muito semelhante à da linguagem de programação C. É conhecido como "csh".
Shell de TC
O shell TC é uma expansão do shell C. Ele tem todos os mesmos recursos, mas adiciona a capacidade de usar teclas do programa processador de texto Emacs para editar texto na linha de comando. Por exemplo, os usuários podem pressionar Esc-D para excluir o restante da palavra destacada. Também é conhecido como "tcsh".
Korn Shell
Korn Shell também foi escrito por um desenvolvedor da Bell Labs, David Korn. Ele tenta mesclar os recursos do shell C, shell TC e shell Bourne em um pacote. Ele também inclui a capacidade de os desenvolvedores criarem novos comandos de shell conforme a necessidade.
É conhecido como "ksh".
Bourne-Again Shell
O shell Bourne-Again é uma versão atualizada do shell Bourne original que foi criado pela Free Software Foundation para seu projeto GNU de código aberto. Por esse motivo, é um shell amplamente utilizado na comunidade de código aberto.
Sua sintaxe é semelhante à usada pelo Bourne shell, porém incorpora alguns dos recursos mais avançados encontrados nos shells C, TC e Korn.
Entre os recursos adicionais que faltavam ao Bourne estão a capacidade de completar os nomes dos arquivos pressionando a tecla TAB, a capacidade de lembrar um histórico de comandos recentes e a capacidade de executar vários programas em segundo plano ao mesmo tempo.
É conhecido como "bash".