Tohle sice funguje krásně, ale pokud taková proměnná neexistuje, shell interpretuje...
Zase na druhou stranu, že nějaká proměnná neexistuje, neznamená, že se budu tvářit, že je vše ok a vyložím si ji po svém, tedy jako prázdný řetězec (tak, jak to shell udělá), něco jako chyba scriptu, že proměnná není definovaná? A nadpis zprávičky je docela odfláknutý, protože co je na rm -rf špatného? Ten příkaz je absolutně v pořádku, jen jde o to, kde se spustí.
Proč by shell měl nějak reagovat? Neexistující = prázdná je archaické a dobře dokumentované pravidlo. Navíc je dáno technologií, shell býval jednoduché prostředí s jednoduchými konstrukcemi. Konstrukt "try catch finally" je nad rámec historických možností. A shell, který při jakékoliv chybě prostě spadne je k ničemu. Proto se místo cestou "vypiš chybu a skonči" (to by milovali autoři init scriptů) šlo cestou "chování je vždy definováno".
Ten, kdo si to měl ošetřit, je autor toho scriptu. Měl tam dát podmínku, zda je proměnná definována, a teprve pokud ano, tak ten příkaz provést. A ještě pro jistotu ověřit nějak její hodnotu na něco, co dává smysl.
Ne, tak to neni, nezalezi, kde se to pusti, dopadne to stejne. Zalezi pouze, jaky uzivatel to provede. Proste smazeme si uplne vsechno, co jako dany uzivatel muzeme. Jelikoz "/"* je vlasne /* a to se ve fazi globbing expanduje na /bin /boot ... a tak dal...
Takze nakonec se spousi rm -rf /bin /boot /dev /etc /home /mnt ....