Czasami używam, $PROJECT_HOME/*aby usunąć wszystkie pliki w projekcie. Gdy zmienna środowiskowa PROJECT_HOMEnie jest ustawiona (ponieważ tak zrobiłem, sua nowy użytkownik nie ma ustawionej tej zmiennej środowiskowej), rozpoczyna usuwanie wszystkich plików z folderu głównego. To apokaliptyczne.
Jak mogę skonfigurować, bashaby wyświetlał błąd, gdy używam niezdefiniowanej zmiennej środowiskowej w powłoce?
[ -z "$VAR" ]działa również z niezainicjowanym VAR. Inicjalizacja miała po prostu pokazać niepożądane zachowanie. Chodzi mi o to, że jeśli wasze zmienne zostaną zainicjowane na puste łańcuchy, w jakikolwiek sposób, i rm -r "$PROJECT_HOME"/*błędnie na tym polegacie set -u, otrzymacie zachowanie „apokaliptyczne”. IHMO, lepiej być bezpiecznym niż żałować, jeśli chodzi o ochronę całej zawartości twojego komputera. set -unie jest bezpieczne.
PROJECT_HOME=/etc? Samo sprawdzenie pustej wartości nie wystarczy, aby zapobiec kataklizmowi. Nie należy używać zmiennych od niezaufanych użytkowników podczas uruchamiania jako root.
set -uzrobi co chcesz.