Às vezes eu uso, $PROJECT_HOME/*
para excluir todos os arquivos do projeto. Quando a variável de ambiente PROJECT_HOME
não está definida (como eu fiz su
e o novo usuário não tem essa variável de ambiente definida), ela começa a excluir todos os arquivos da pasta raiz. Isso é apocalíptico.
Como posso configurar bash
para gerar erro quando uso uma variável de ambiente indefinida no shell?
[ -z "$VAR" ]
trabalha com um não inicializado VAR
também. A inicialização foi apenas para mostrar o comportamento indesejável - o que quero dizer é que, se seus vars forem inicializados em cadeias vazias, de qualquer maneira, e você continuar rm -r "$PROJECT_HOME"/*
confiando erroneamente set -u
, obterá o comportamento "apocalíptico". IHMO, é melhor prevenir do que remediar quando se trata de proteger todo o conteúdo do seu computador. set -u
não é seguro.
PROJECT_HOME=/etc
? Apenas verificar se há um valor vazio não é suficiente para impedir o cataclismo. Você não deve usar variáveis de usuários não confiáveis ao executar como root.
set -u
fará o que você quiser.