Skip to main content

ZC4001 - Deprecated Command

Descrição

Comando obsoleto, depreciado ou não-portátil foi utilizado.

Comandos Flagrados

ComandoProblemaAlternativa
whichNão é padrão POSIXcommand -v ou type
whereisNão é portátilcommand -v ou type
fingerObsoleto, muitas vezes indisponívelid, getent, ldapsearch
mailComando legadosendmail, mutt, mailx
uudecodeObsoletobase64 -d
uuencodeObsoletobase64

Exemplo Problemático

#!/bin/zsh

# which é não-padrão
python_path=$(which python3)

# uuencode é obsoleto
uuencode arquivo.bin > arquivo.uu

Solução Correta

Use alternativas portáveis e modernas:

#!/bin/zsh

# command -v é POSIX-compliant
python_path=$(command -v python3)

# base64 é o padrão moderno
base64 arquivo.bin > arquivo.b64

Diferença Entre Alternativas

which vs command -v vs type

#!/bin/zsh

# which - pode não existir, retorna path
which python3

# command -v - POSIX, portátil, retorna path ou alias
command -v python3

# type - builtin do shell, mais informativo
type python3

Para scripts que precisam ser portáveis:

#!/bin/zsh

# Mais seguro
if command -v python3 >/dev/null 2>&1; then
echo "Python3 disponível"
fi

Por Que Isso Importa

  • Portabilidade - Scripts funcionam em diferentes sistemas (Linux, macOS, BSD)
  • Manutenção - Comandos obsoletos podem ser removidos em futuras versões
  • Segurança - Comandos antigos podem ter vulnerabilidades não corrigidas

Quando Pode Ser Aceitável

Em ambientes controlados onde:

  • O comando é garantido existir
  • É uma preferência de equipe/documentada
  • Está em código legado sendo mantido

Referências