Linux
在 bash 腳本中防止“rm -rf /”的最佳實踐
眾所周知,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
如果它只是一個文件)在刪除任何東西之前總是一個好主意。