Czasami używam, $PROJECT_HOME/*
aby usunąć wszystkie pliki w projekcie. Gdy zmienna środowiskowa PROJECT_HOME
nie jest ustawiona (ponieważ tak zrobiłem, su
a nowy użytkownik nie ma ustawionej tej zmiennej środowiskowej), rozpoczyna usuwanie wszystkich plików z folderu głównego. To apokaliptyczne.
Jak mogę skonfigurować, bash
aby 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 -u
nie 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 -u
zrobi co chcesz.