Manchmal benutze ich, $PROJECT_HOME/*
um alle Dateien im Projekt zu löschen. Wenn die Umgebungsvariable PROJECT_HOME
nicht festgelegt ist (da dies su
der 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, bash
um 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 -u
ist 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 -u
werde tun was du willst.