一個空格引發的慘劇

最近流傳的一個很悲慘的 Giant Bug fix, 詳見此連結: Commit a047be85247755cdbe0acce6f1dafc8beb84f2ac.

此次 Commit 修正的內容如下: (應該是手誤, 多了一個空白, 但是這個空白造成非常大的慘劇(把 /usr 砍掉))

@@ -348,7 +348,7 @@ case "$DISTRO" in
-  rm -rf /usr /lib/nvidia-current/xorg/xorg
+  rm -rf /usr/lib/nvidia-current/xorg/xorg

這種事情還蠻常見的, 特別是在 緊張 或 精神不佳 的狀況, 就常會有這種大爆炸的狀況發生.

最常見的避免法, 是把 rm 改成 mv, 先都搬到一個目錄, 確定沒有用再砍掉(或定時砍掉), 可以讓此災難影響範圍小一點.

相關文章

這篇文章有把這個 Commit 下面那些精彩的圖片都整理成此篇: 一個空格引發的慘劇

此作者(陳皓)還有寫以下這些文章, 都是程式設計師慘痛經驗的累積成果, 建議可以參考看看~ (註: 下述用語不特別轉換, 只有轉成繁體而已)

  • 如何寫出無法維護代碼 - 推薦此篇一定要看(這些事情要盡量避免)
  • 下述摘錄自此文: 程序員那些悲摧的事兒
    • 所有的經驗都是從錯誤中來的
    • 測試環境和生產環境的數據不要混在一起
    • 在 Delete 之前, 最好先做一次 Select
    • 尤其是剛出道的程序員, 你們要多多犯錯, 要犯錯那種丟死人的錯, 這樣你才會知恥而勇
    • 犯錯不可怕, 可怕的是不會從中總結教訓, 同一個錯犯兩次
  • 下述摘錄自此文: 老手是這樣教新手編程的
    • 讓其獨立思考
    • 步步為營的引導
    • 教一種方法, 而不是直接給答案

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料