Terkadang saya menggunakan, $PROJECT_HOME/*
untuk menghapus semua file dalam proyek. Ketika variabel lingkungan, PROJECT_HOME
tidak disetel (karena saya lakukan su
dan pengguna baru tidak memiliki set variabel lingkungan ini), itu mulai menghapus semua file dari folder root. Ini apokaliptik.
Bagaimana saya bisa mengkonfigurasi bash
untuk melempar kesalahan, ketika saya menggunakan variabel lingkungan yang tidak terdefinisi di shell?
[ -z "$VAR" ]
bekerja dengan yang tidak diinisialisasi VAR
juga. 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 -u
tidak 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 -u
akan melakukan apa yang Anda inginkan.