Skip to main content

ZC5002 - Shebang Check

Descrição

Verifica o shebang de scripts zsh para garantir que indicam corretamente o interpretador.

O Que é Verificado

Este check detecta quando um script tem shebang de bash (#!/bin/bash ou #!/usr/bin/env bash) mas pode ser destinado ao zsh.

Exemplo de Aviso

#!/bin/bash
# ^^^^^^^ ZC5002: Script tem shebang bash mas pode ser para zsh

echo "Hello World"

Quando Este Check Aparece

O ZC5002 é reportado quando:

  1. O arquivo tem shebang indicando bash
  2. O ZshCheck está analisando o arquivo (possível uso de recursos zsh)

Soluções

Se o script realmente deve ser zsh:

#!/bin/zsh
# ou
#!/usr/bin/env zsh

echo "Hello World"

Se o script é genérico e deve funcionar em POSIX sh:

#!/bin/sh

echo "Hello World"

Se deve ser bash mesmo:

  • Ignore o check: zshcheck --exclude ZC5002 script.sh
  • Ou analise explicitamente como bash (se outra ferramenta suportar)

Níveis de Shebang Comuns

ShebangPropósitoPortabilidade
#!/bin/zshZsh específico✅ Boa (Linux, macOS)
#!/usr/bin/env zshZsh via PATH✅⭐ Melhor (encontra zsh em qualquer lugar)
#!/bin/bashBash específico✅ Boa
#!/bin/shPOSIX sh genérico✅⭐⭐ Melhor portabilidade

Melhor Prática

Use #!/usr/bin/env zsh para máxima compatibilidade:

#!/usr/bin/env zsh

# Script zsh moderno
echo "Usando zsh: $ZSH_VERSION"

Isso funciona mesmo quando zsh está em:

  • /usr/bin/zsh
  • /bin/zsh
  • /usr/local/bin/zsh
  • /opt/homebrew/bin/zsh (macOS com Homebrew)

Scripts Sem Shebang

Scripts sem shebang são geralmente:

  • Bibliotecas para serem sourced
  • Arquivos de configuração
  • Ignorados por este check

Referências