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