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/bashaponta para um caminho fixo do Bash.#!/usr/bin/env bashencontra o Bash via PATH, o que é mais portável.#!/usr/bin/env python3faz 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 bashencontra o interpretador via PATH para portabilidade. - O shebang decide quais recursos de shell um script executado diretamente recebe.