A volte uso, $PROJECT_HOME/*per eliminare tutti i file nel progetto. Quando la variabile di ambiente PROJECT_HOMEnon è impostata (perché l'ho fatto sue il nuovo utente non ha impostato questa variabile di ambiente), inizia a eliminare tutti i file dalla cartella principale. Questo è apocalittico.
Come posso configurare bashper generare un errore quando uso una variabile d'ambiente non definita nella shell?
[ -z "$VAR" ]funziona anche con un non inizializzato VAR. L'inizializzazione era solo per mostrare il comportamento indesiderato: il mio punto è, se i tuoi var vengono mai inizializzati in stringhe vuote, in qualunque modo, e corri rm -r "$PROJECT_HOME"/*erroneamente affidandoti set -u, otterrai il comportamento "apocalittico". IHMO, è meglio prevenire che curare quando si tratta di proteggere l'intero contenuto del computer. set -unon è sicuro.
PROJECT_HOME=/etc? Il solo controllo di un valore vuoto non è sufficiente per prevenire il cataclisma. Non utilizzare variabili da utenti non attendibili quando si esegue come root.
set -ufarà quello che vuoi.