Terkadang saya menggunakan, $PROJECT_HOME/*untuk menghapus semua file dalam proyek. Ketika variabel lingkungan, PROJECT_HOMEtidak disetel (karena saya lakukan sudan pengguna baru tidak memiliki set variabel lingkungan ini), itu mulai menghapus semua file dari folder root. Ini apokaliptik.
Bagaimana saya bisa mengkonfigurasi bashuntuk melempar kesalahan, ketika saya menggunakan variabel lingkungan yang tidak terdefinisi di shell?
[ -z "$VAR" ]bekerja dengan yang tidak diinisialisasi VARjuga. Inisialisasi itu hanya untuk menunjukkan perilaku yang tidak diinginkan — Maksud saya adalah, jika vars Anda pernah diinisialisasi ke string kosong, dengan cara apa pun, dan Anda menjalankannya dengan rm -r "$PROJECT_HOME"/*mengandalkan kesalahan set -u, Anda akan mendapatkan perilaku "apokaliptik". IHMO, lebih baik aman daripada menyesal ketika harus melindungi seluruh isi komputer Anda. set -utidak aman.
PROJECT_HOME=/etc? Hanya memeriksa nilai kosong tidak cukup untuk mencegah bencana. Anda seharusnya tidak menggunakan variabel dari pengguna yang tidak dipercaya saat menjalankan sebagai root.
set -uakan melakukan apa yang Anda inginkan.