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