Parfois, j'utilise $PROJECT_HOME/*pour supprimer tous les fichiers du projet. Lorsque la variable d'environnement PROJECT_HOMEn'est pas définie (car je l'ai fait suet que le nouvel utilisateur n'a pas cette variable d'environnement définie), elle commence à supprimer tous les fichiers du dossier racine. C'est apocalyptique.
Comment puis-je configurer bashpour générer une erreur, lorsque j'utilise une variable d'environnement non définie dans le shell?
[ -z "$VAR" ]fonctionne également avec un fichier non initialisé VAR. L'initialisation était juste pour montrer le comportement indésirable - Mon point est, si jamais vos vars sont initialisés à des chaînes vides, de quelque manière que ce soit, et que vous exécutez à rm -r "$PROJECT_HOME"/*tort en vous appuyant sur set -u, vous obtiendrez le comportement «apocalyptique». IHMO, il vaut mieux prévenir que guérir lorsqu'il s'agit de protéger l'intégralité du contenu de votre ordinateur. set -un'est pas sûr.
PROJECT_HOME=/etc? Il ne suffit pas de vérifier une valeur vide pour éviter un cataclysme. Vous ne devez pas utiliser de variables d'utilisateurs non fiables lors de l'exécution en tant que root.
set -ufera ce que vous voulez.