Parfois, j'utilise $PROJECT_HOME/*
pour supprimer tous les fichiers du projet. Lorsque la variable d'environnement PROJECT_HOME
n'est pas définie (car je l'ai fait su
et 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 bash
pour 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 -u
n'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 -u
fera ce que vous voulez.