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:
- O arquivo tem shebang indicando bash
- 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
| Shebang | Propósito | Portabilidade |
|---|---|---|
#!/bin/zsh | Zsh específico | ✅ Boa (Linux, macOS) |
#!/usr/bin/env zsh | Zsh via PATH | ✅⭐ Melhor (encontra zsh em qualquer lugar) |
#!/bin/bash | Bash específico | ✅ Boa |
#!/bin/sh | POSIX 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