Іноді я використовую $PROJECT_HOME/*
для видалення всіх файлів у проекті. Коли змінна середовища PROJECT_HOME
не встановлена (тому що я su
і у нового користувача не встановлено цю змінну середовища), вона починає видаляти всі файли з кореневої папки. Це апокаліптично.
Як я можу налаштувати bash
помилку, коли я використовую невизначену змінну середовища в оболонці?
[ -z "$VAR" ]
працює і з неініціалізованими VAR
. Ініціалізація полягала лише у тому, щоб показати небажану поведінку. Моя думка, якщо ваші коли-небудь будь-яким чином ініціалізуються на порожні рядки, і ви rm -r "$PROJECT_HOME"/*
помилково покладетесь на них set -u
, ви отримаєте "апокаліптичну" поведінку. IHMO, краще захиститись, ніж шкодувати, коли йдеться про захист всього вмісту вашого комп’ютера. set -u
не є безпечним.
PROJECT_HOME=/etc
? Просто перевірка порожнього значення недостатня для запобігання катаклізму. Не слід використовувати змінні від недовірених користувачів під час запуску як root.
set -u
зробить те, що ти хочеш.