No Windows, quando você abre um prompt de comando, quase sempre o programa em execução é cmd.exe . É uma derivada avançada do NT do antigo command.com baseado em DOS, que por sua vez tem semelhanças com o interpretador de comandos CP / M CCP ainda mais antigo.
No Linux, como @Griffin menciona, normalmente você está executando bash em algum tipo de emulador de terminal se estiver usando-o em um ambiente gráfico. (que pode variar muito dependendo da sua distro e ambiente de trabalho). Isso significa "Bourne Again SHell" porque é uma versão estendida de um shell "Bourne" anterior ( sh ) que é padrão no Unix há muito tempo. Há outros shells "alternativos" em uso comum, como csh , ksh e tcsh .
O Windows cmd.exe também pode ser considerado um shell (assim como explorer.exe ).
O prompt de comando do Windows e todos os shells Unix possuem vários "built-ins", ou comandos que são manipulados inteiramente dentro do shell. Isso inclui alguns comandos básicos (como cd ) e muitos comandos condicionais e operadores que controlam o fluxo de script se um arquivo de lote de comandos for executado.
No entanto, tanto no Linux quanto no Windows, a grande maioria dos "comandos" que fazem coisas úteis são na verdade programas externos que são "chamados" pelo shell. E esse é o objetivo principal de um shell, permitir que um operador inicie programas com argumentos específicos para esses programas. Não é estritamente uma linguagem de programação, é apenas uma estrutura para o lançamento de programas.