sh vs bash : Um resumo

Abr 18, 2021
admin

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).

Agora temos uma ideia do que é a shell e o kernel, podemos tentar compreender sh e Bash.

sh

Estritamente falando, sh (ou a linguagem de comandos Shell) é uma linguagem de programação descrita pelo padrão POSIX. A chave aqui é que sh não é realmente uma linguagem de programação em si mesma. É apenas uma especificação. Especificação é uma descrição detalhada da sintaxe e semântica dessa linguagem. Especificação não inclui uma implementação.

Bash

Existem sistemas operacionais diferentes com seus próprios shells e kernel. O Bash é o shell para o sistema operacional GNU. Mas também podemos dizer que o bash é uma linguagem de programação.

Espere, isso não é confuso? O bash é tanto uma shell como uma linguagem de programação?

Pense em python. Também podemos iniciar o Python em modo interativo e ele se comporta como uma shell. Ou JavaScript, ou Ruby ou qualquer linguagem de script.

>

Faz sentido?

Bash é uma linguagem de programação que pode ser pensada como uma implementação de sh (embora isso tenha mudado com o tempo).

Para resumir, sh é uma especificação, bash é a implementação.

Deixe uma resposta

O seu endereço de email não será publicado.