Skip to content
Latchkey

O Que É uma Linha Shebang? Escolhendo o Interpretador

Uma linha shebang é a primeira linha de um script, iniciando com #! , que informa ao sistema operacional qual interpretador deve executar o arquivo.

Quando você executa um script diretamente, o sistema operacional precisa saber qual programa deve interpretá-lo: Bash, Python, Node ou algo mais. A linha shebang responde isso. É um detalhe pequeno mas importante que decide qual shell ou interpretador, e portanto quais recursos, seu script de CI recebe.

Como um shebang se parece

É a primeira linha e começa com os dois caracteres #! seguidos de um caminho, por exemplo #!/bin/bash ou #!/usr/bin/env python3. O SO o lê quando você executa o arquivo diretamente.

Como é usado

Quando você executa ./script.sh, o kernel vê o shebang, lança o interpretador nomeado e passa o arquivo a ele. Sem um shebang, o SO pode recair no shell padrão, que talvez não seja o que você pretendia.

Shebangs baseados em env

  • #!/bin/bash aponta para um caminho fixo do Bash.
  • #!/usr/bin/env bash encontra o Bash via PATH, o que é mais portável.
  • #!/usr/bin/env python3 faz o mesmo para interpretadores Python.

Por que o shebang importa

O shebang decide se seu script roda sob sh ou bash, o que muda quais recursos estão disponíveis. Um script que usa arrays do Bash vai quebrar se seu shebang resolver para um shell POSIX puro.

Shebangs em CI

CI frequentemente invoca scripts explicitamente (bash deploy.sh), o que sobrepõe o shebang. Mas quando steps chamam um script versionado diretamente, o shebang controla o interpretador, então acertá-lo mantém execuções locais e de CI consistentes.

Consistência em runners gerenciados

Os runners da Latchkey fornecem os interpretadores em localizações previsíveis, então um shebang #!/usr/bin/env bash resolve da mesma forma a cada execução. Isso mantém scripts executados diretamente se comportando igual no CI e na máquina de um desenvolvedor.

Principais conclusões

  • Um shebang é a primeira linha de um script nomeando o interpretador a usar.
  • Usar #!/usr/bin/env bash encontra o interpretador via PATH para portabilidade.
  • O shebang decide quais recursos de shell um script executado diretamente recebe.

Guias relacionados