Ketika skrip memanggil skrip lain, variabel skrip induk dapat diekspor, dan kemudian mereka akan terlihat di skrip anak. Mengekspor fungsi adalah generalisasi yang jelas: mengekspor fungsi dari orang tua, membuatnya terlihat pada anak.
Lingkungan adalah satu-satunya cara yang nyaman bagi suatu proses untuk memberikan data yang sewenang-wenang kepada anak-anaknya. Data harus diolah menjadi string yang tidak mengandung byte nol, yang tidak menyulitkan fungsi shell. Ada metode potensial lainnya, seperti blok memori bersama atau file sementara yang dikirimkan melalui deskriptor file, tetapi ini dapat menyebabkan masalah dengan program perantara yang tidak tahu apa yang harus dilakukan dengan mereka atau akan menutupnya. Program berharap berjalan di lingkungan yang berisi variabel yang tidak mereka ketahui atau pedulikan, sehingga mereka tidak akan menimpa atau menghapusnya.
Pilihan menggunakan nama fungsi sebagai nama variabel lingkungan adalah aneh. Untuk satu hal, itu berarti bahwa variabel yang diekspor bentrok dengan fungsi yang diekspor dengan nama yang sama.
Fungsi yang diekspor adalah fitur lama. Fungsi ditambahkan dalam shell Bourne di SVR2 , dan fungsi yang diekspor di shell Versi 8 dirilis pada tahun yang sama (1984). Dalam shell itu, variabel dan fungsi menggunakan namespace yang sama. Saya tidak tahu bagaimana fungsi ekspor berfungsi. The Heirloom shell didasarkan pada varian Bourne yang memiliki fungsi tetapi tidak ekspor mereka.
ATT ksh seharusnya mendukung fungsi ekspor, tetapi melihat sumbernya atau bermain dengannya, saya tidak dapat melihatnya, pada ksh93u.
env -i /usr/bin/ksh -c 'f=variable; f () { echo function; }; typeset -fx f; /usr/bin/env; ksh -c f'
_=*25182*/usr/bin/env
PWD=/home/gilles
SHLVL=1
A__z="*SHLVL
ksh: f: not found
Klon domain publik Ksh (pdksh, mksh), tanda hubung dan zsh tidak mendukung fungsi ekspor.