Linux

在 bash 腳本中防止“rm -rf /”的最佳實踐

  • November 9, 2010

眾所周知,env.variable 中的額外空間會導致刪除 bash 腳本中的 / 目錄。

#!/bin/bash
...
rm -rf /$MYPATH

如果 $MYPATH 包含像**“dir”“dir /”這樣的值,它將導致“rm -rf / dir”“rm -rf dir /”。並將導致“rm -rf /”**

是否有任何最佳實踐來防止這種情況?

別名 rm='rm --preserve-root'

IIRC –preserve-root 是較新版本的 coreutils 的預設設置。

總是引用你的論點。即使您知道它們是理智的,在腳本中引用它們也幾乎沒有什麼壞處。

rm -rf "/$FOO"如果 $FOO 有前導空格,則不會刪除 /,而是您不會刪除任何內容。這確實需要引號出現在與 的行上rm -rf,當然,不是這樣的:

TODEL="/$FOO"
rm -rf $TODEL

如果你這樣做,你就會陷入一大堆麻煩之中。

另外,我傾向於認為一個好人:

if [ -d "/$FOO" ] ; then
   ...
fi

(或者-e如果它只是一個文件)在刪除任何東西之前總是一個好主意。

引用自:https://serverfault.com/questions/199798