Saya membaca di sini bahwa tujuan dari export
suatu shell adalah untuk membuat variabel tersedia untuk sub-proses yang dimulai dari shell.
Namun, saya juga membaca di sini dan di sini bahwa "Proses mewarisi lingkungan mereka dari orang tua mereka (proses yang memulai mereka)."
Jika ini masalahnya, mengapa kita perlu export
? Apa yang saya lewatkan?
Apakah variabel shell bukan bagian dari lingkungan secara default? Apa bedanya?
set -k
begitu yang dapat digunakancmd ENVVAR=value
di tempatENVVAR=value cmd
, yang tidak akan bekerja dalam contoh Anda kecualiset -k
dijalankan sebelum memohonf
. Juga, tidak banyak shell yang mendukungnya saat ini dan hanya untuk kompatibilitas dengan shell Bourne. Dalam shell Bourne (atau Korn), itu tidak akan berfungsi untuk fungsi. Dan karena itu mempengaruhi penguraian shell, itu harus berlaku pada saat shell membaca kode yang menggunakannya di sana.