Tidak ada manfaatnya untuk menetapkan string kosong ke variabel dan kemudian segera menetapkan string variabel lain untuk itu. Penugasan nilai ke variabel shell akan sepenuhnya menimpa nilai sebelumnya.
Setahu saya tidak ada rekomendasi yang mengatakan bahwa Anda harus secara eksplisit menginisialisasi variabel ke string kosong. Bahkan, melakukan hal itu dapat menutupi kesalahan dalam beberapa keadaan (kesalahan yang akan terlihat jika berjalan di bawah set -u, lihat di bawah).
Variabel yang tidak disetel, tidak digunakan sejak awal skrip atau secara eksplisit tidak disetel dengan menjalankan unsetperintah di atasnya, tidak akan memiliki nilai. Nilai variabel semacam itu tidak akan berarti apa-apa. Jika digunakan sebagai "$myvariable", Anda akan mendapatkan yang setara dengan "", dan Anda tidak akan pernah mendapatkan "data sampah".
Jika opsi shell nounsetdiatur dengan salah satu set -o nounsetatau set -u, maka referensi variabel yang tidak disetel akan menyebabkan shell menghasilkan kesalahan (dan shell non-interaktif akan berakhir):
$ set -u
$ echo "$myvariable"
/bin/sh: myvariable: parameter not set
atau, di bash:
$ set -u
$ echo "$myvariable"
bash: myvariable: unbound variable
Variabel Shell akan diinisialisasi oleh lingkungan jika nama variabel sesuai dengan variabel lingkungan yang ada.
Jika Anda berharap bahwa Anda menggunakan variabel yang dapat diinisialisasi oleh lingkungan dengan cara ini (dan jika tidak diinginkan), maka Anda dapat menghapusnya secara eksplisit di depan bagian utama skrip Anda:
unset myvariable # unset so that it doesn't inherit a value from the environment
yang juga akan menghapusnya sebagai variabel lingkungan, atau, Anda dapat mengabaikan nilai awal dan hanya menimpanya dengan tugas (yang akan membuat nilai perubahan variabel lingkungan juga).
Anda tidak akan pernah menemukan sampah yang tidak diinisialisasi dalam variabel shell (kecuali, seperti yang disebutkan, bahwa sampah sudah ada di variabel lingkungan dengan nama yang sama).