Se você está lendo isso, então há uma boa chance de que você tenha encontrado os termos shell, sh, bash etc no passado. Estes termos podem parecer confusos e como eles estão intimamente relacionados isso torna o problema ainda pior. Então eu decidi escrever este post com o objetivo de tentar explicar as diferenças entre eles.
Shell vs Kernel
Antes de seguir em frente é importante que entendamos o significado dos termos shell e kernel.
Kernel
O kernel é o centro do sistema operacional. Ele é responsável por fazer coisas como interagir com o hardware, fazer I/O de arquivos e gerar processos.
Shell
A shell age como uma interface entre o usuário e o kernel. Tecnicamente falando, um shell é um interpretador de linha de comando, ou seja, o programa que interpreta o comando que você digita no seu emulador de terminal (modo interativo) ou processa scripts shell (arquivos de texto contendo comandos).