Đôi khi tôi sử dụng, $PROJECT_HOME/*
để xóa tất cả các tập tin trong dự án. Khi biến môi trường, PROJECT_HOME
không được đặt (vì tôi đã làm su
và người dùng mới không đặt biến môi trường này), nó bắt đầu xóa tất cả các tệp khỏi thư mục gốc. Đây là ngày tận thế.
Làm cách nào bash
để định cấu hình để ném lỗi, khi tôi sử dụng biến môi trường không xác định trong trình bao?
[ -z "$VAR" ]
làm việc với một uninitialized VAR
quá. Việc khởi tạo chỉ là để thể hiện hành vi không mong muốn. Quan điểm của tôi là, nếu các vars của bạn đã được khởi tạo thành các chuỗi rỗng, bằng mọi cách, và bạn chạy rm -r "$PROJECT_HOME"/*
sai dựa vào set -u
, bạn sẽ có hành vi "tận thế". IHMO, tốt hơn hết là bạn nên an toàn hơn là xin lỗi khi bảo vệ toàn bộ nội dung trên máy tính của bạn. set -u
không an toàn
PROJECT_HOME=/etc
thì sao? Chỉ kiểm tra một giá trị trống là không đủ để ngăn chặn thảm họa. Bạn không nên sử dụng các biến từ người dùng không tin cậy khi chạy bằng root.
set -u
sẽ làm những gì bạn muốn.