जब कोई स्क्रिप्ट किसी अन्य स्क्रिप्ट को आमंत्रित करती है, तो पैरेंट स्क्रिप्ट के चर निर्यात किए जा सकते हैं, और फिर वे चाइल्ड स्क्रिप्ट में दिखाई देंगे। निर्यात कार्य एक स्पष्ट सामान्यीकरण है: माता-पिता से फ़ंक्शन का निर्यात करें, इसे बच्चे में दिखाई दें।
पर्यावरण ही एक सुविधाजनक तरीका है जिससे एक प्रक्रिया अपने बच्चों को मनमाना डेटा दे सकती है। डेटा को स्ट्रिंग्स में मार्शल्ड किया जाना चाहिए जिसमें शून्य बाइट्स न हों, जो शेल फ़ंक्शन के लिए कोई कठिनाई नहीं है। अन्य संभावित तरीके हैं, जैसे कि साझा मेमोरी ब्लॉक या अस्थायी फ़ाइल फ़ाइल डिस्क्रिप्टर से गुजरती हैं, लेकिन ये मध्यवर्ती कार्यक्रमों के साथ समस्याएं पैदा कर सकती हैं जो नहीं जानते कि उनके साथ क्या करना है या उन्हें बंद करना होगा। प्रोग्राम एक ऐसे वातावरण में चलने की उम्मीद करते हैं जिसमें वे चर होते हैं जिनके बारे में वे नहीं जानते या परवाह नहीं करते हैं, इसलिए वे ओवरराइटिंग या उन्हें मिटा नहीं पाएंगे।
पर्यावरण चर के नाम के रूप में फ़ंक्शन नाम का उपयोग करने का विकल्प एक अजीब है। एक बात के लिए, इसका मतलब है कि एक निर्यात चर एक ही नाम के एक निर्यात समारोह के साथ संघर्ष।
निर्यात किए गए कार्य एक पुरानी विशेषता है। SVR2 में बॉर्न शेल में फ़ंक्शंस जोड़े गए थे , और उसी वर्ष (1984) जारी संस्करण 8 शेल में निर्यात किए गए फ़ंक्शन । उस शेल में, चर और फ़ंक्शन समान नामस्थान का उपयोग करते थे। मुझे नहीं पता कि फंक्शन एक्सपोर्ट कैसे काम करता है। विरासत खोल एक बॉर्न प्रकार, जिसमें कार्य करता है लेकिन उन्हें निर्यात नहीं करता है पर आधारित है।
ATT ksh माना जाता है कि यह निर्यात कार्यों का समर्थन करता है, लेकिन स्रोत को देखते हुए या इसके साथ खेलते हुए, मैं यह नहीं देख सकता कि यह k9393 के रूप में है।
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
Ksh का सार्वजनिक डोमेन क्लोन (pdksh, mksh), डैश और zsh निर्यात कार्यों का समर्थन नहीं करते हैं।