Skip to content
Latchkey

O Que É um Shell? O Interpretador de Comandos Explicado

Um shell é um programa que pega os comandos que você digita, os interpreta e pede ao sistema operacional para executá-los.

Cada linha em um script de CI, cada bloco run: em um workflow, é entregue a um shell. O shell analisa o texto, expande variáveis e wildcards, lança os programas certos e reporta se eles tiveram sucesso. Entender o shell explica por que um script se comporta de forma diferente dependendo de qual shell o executa e quais opções estão definidas.

O que um shell faz

Um shell lê uma linha de entrada, divide-a em um comando e seus argumentos, realiza expansões (variáveis, globs, substituição de comandos), então inicia o programa e espera ele terminar. Ele é tanto um prompt interativo quanto uma linguagem de scripting.

Uso interativo vs scriptado

Quando você senta em um terminal, o shell pede um comando por vez. Quando ele roda um script, lê os comandos de um arquivo de cima para baixo. A CI quase sempre usa o modo scriptado, não interativo, que se comporta ligeiramente diferente do seu prompt local.

Shells comuns

  • sh: o shell POSIX mínimo, o menor denominador comum.
  • bash: o shell Linux mais comum, com muitos recursos extras.
  • zsh: o padrão no macOS moderno, compatível com bash para a maioria dos scripts.
  • PowerShell: o shell padrão em runners Windows.

Por que o shell importa em CI

Um step de workflow que funciona no seu laptop pode falhar na CI porque um shell diferente, ou o mesmo shell com opções diferentes, analisou seu script. Saber qual shell roda e quais flags estão definidas é o primeiro passo para depurar um script instável.

Um exemplo rápido

A linha cp build/*.js dist/ não é entendida diretamente pelo sistema operacional. O shell expande build/*.js em uma lista de arquivos correspondentes primeiro, então invoca cp com essa lista. Sem shell, sem expansão.

Shells em runners gerenciados

Em um runner gerenciado como o Latchkey, cada step lança um shell novo com um padrão previsível, então os scripts se comportam da mesma forma em toda execução. Essa consistência torna as falhas reproduzíveis em vez de mistérios do tipo "funciona na minha máquina".

Principais conclusões

  • Um shell interpreta seus comandos e pede ao sistema operacional para executá-los.
  • A CI roda o shell em modo não interativo e scriptado, que pode diferir do seu prompt.
  • Qual shell e quais opções estão ativos moldam diretamente como um script de CI se comporta.

Guias relacionados