Asumsikan saya di direktori / home / userA
Ada variabel lingkungan $ XMLFILES yang menunjuk ke / u / xml / xmlfiles. Variabel lingkungan $ XMLFILES ada di lingkungan / profil userA
Saya masuk sebagai userA lalu 'su' ke userB dan saya cd ke / home / userB / testdata.
Saya tidak menyadari bahwa saya adalah userB jadi saya mengeluarkan perintah
rm $XMLFILES/*
Dan tiba-tiba saya melihat ini
bash-3.00$ rm $XMLFILES/*
rm: /bin not removed: Permission denied
rm: /boot is a directory
rm: /cdrom is a directory
rm: /dev is a directory
rm: /devices is a directory
rm: /etc is a directory
rm: /export is a directory
rm: /home is a directory
rm: /kernel is a directory
rm: /lib is a directory
rm: /lost+found is a directory
rm: /mnt is a directory
rm: /net is a directory
rm: /noffprotect: override protection 644 (yes/no)? ^C
Saya menekan [CTRL + C] segera setelah saya melihat pesan perlindungan yang ditimpa. Saya pikir karena $ XMLFILES adalah nol karena saya login sebagai userB perintah yang dikeluarkan sebenarnya
rm *
Sekarang yang tidak saya mengerti adalah mengapa ia mencoba menghapus semuanya dari folder root? sejak saya di / home / userB, haruskah itu hanya mencoba untuk menghapus semuanya di 'tingkat atas' / home / userB '? perintah rm bahkan bukan penghapusan rekursif.
Mengingat bahwa pengguna yang saya masuki bukan pengguna root, apakah ini akan menyebabkan kerusakan?
/
di sana, di antara$XMLFILES
dan*
./
.$ XMLFILES akan menjadi string kosong jadi apa yang sebenarnya Anda keluarkan akan menjadi
yang akan dievaluasi hingga
Inilah sebabnya mengapa Anda harus sangat berhati-hati menggunakan $ variabel (yaitu memeriksa keberadaannya terlebih dahulu) dalam argumen baris perintah.
sumber