Manchmal benutze ich, $PROJECT_HOME/*um alle Dateien im Projekt zu löschen. Wenn die Umgebungsvariable PROJECT_HOMEnicht festgelegt ist (da dies suder Fall war und der neue Benutzer diese Umgebungsvariable nicht festgelegt hat), werden alle Dateien aus dem Stammordner gelöscht. Das ist apokalyptisch.
Wie kann ich konfigurieren, bashum Fehler auszulösen, wenn ich eine undefinierte Umgebungsvariable in der Shell verwende?
[ -z "$VAR" ]funktioniert auch mit einem nicht initialisierten VAR. Die Initialisierung sollte nur das unerwünschte Verhalten aufzeigen. Mein Punkt ist, wenn Ihre Vars jemals auf irgendeine Weise mit leeren Zeichenfolgen initialisiert werden und Sie rm -r "$PROJECT_HOME"/*versehentlich darauf vertrauen set -u, werden Sie das "apokalyptische" Verhalten erhalten. IHMO, es ist besser, auf Nummer sicher zu gehen, wenn es darum geht, den gesamten Inhalt Ihres Computers zu schützen. set -uist nicht sicher.
PROJECT_HOME=/etc? Nur nach einem leeren Wert zu suchen, reicht nicht aus, um Katastrophen zu verhindern. Sie sollten keine Variablen von nicht vertrauenswürdigen Benutzern verwenden, wenn Sie als Root ausgeführt werden.
set -uwerde tun was du willst.