A volte uso, $PROJECT_HOME/*
per eliminare tutti i file nel progetto. Quando la variabile di ambiente PROJECT_HOME
non è impostata (perché l'ho fatto su
e il nuovo utente non ha impostato questa variabile di ambiente), inizia a eliminare tutti i file dalla cartella principale. Questo è apocalittico.
Come posso configurare bash
per 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 -u
non è 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 -u
farà quello che vuoi.