Иногда я использую, $PROJECT_HOME/*чтобы удалить все файлы в проекте. Когда переменная окружения PROJECT_HOMEне установлена (потому что я сделал, suа у нового пользователя не установлена эта переменная окружения), он начинает удалять все файлы из корневой папки. Это апокалипсис.
Как я могу настроить, bashчтобы выдавать ошибку, когда я использую неопределенную переменную среды в оболочке?
[ -z "$VAR" ]работает с неинициализированным VARтоже. Инициализация была просто для того, чтобы показать нежелательное поведение. Моя точка зрения заключается в том, что если ваши переменные когда-либо инициализируются пустыми строками, и вы rm -r "$PROJECT_HOME"/*ошибочно полагаетесь на них set -u, вы получите «апокалиптическое» поведение. IHMO, лучше быть в безопасности, чем сожалеть о защите всего содержимого вашего компьютера. set -uне безопасно
PROJECT_HOME=/etc? Просто проверка на пустое значение недостаточно для предотвращения катаклизма. Вы не должны использовать переменные от ненадежных пользователей при запуске от имени пользователя root.
set -uбудет делать то, что вы хотите.