เมื่อสคริปต์เรียกใช้สคริปต์อื่นตัวแปรของสคริปต์หลักสามารถส่งออกได้จากนั้นสคริปต์เหล่านั้นจะปรากฏในสคริปต์ลูก ฟังก์ชั่นการส่งออกเป็นลักษณะทั่วไปที่ชัดเจน: ส่งออกฟังก์ชั่นจากผู้ปกครองทำให้มองเห็นได้ในเด็ก
สภาพแวดล้อมเป็นวิธีที่สะดวกเพียงอย่างเดียวที่กระบวนการสามารถส่งผ่านข้อมูลไปยังลูกโดยพลการ ข้อมูลจะต้องถูกจัดเรียงในสตริงที่ไม่มีไบต์ว่างซึ่งไม่ยากสำหรับฟังก์ชั่นเชลล์ มีวิธีที่เป็นไปได้อื่น ๆ เช่นบล็อกหน่วยความจำที่แชร์หรือไฟล์ชั่วคราวที่ส่งผ่านตัวอธิบายไฟล์ แต่สิ่งเหล่านี้อาจทำให้เกิดปัญหากับโปรแกรมระดับกลางที่ไม่รู้ว่าจะทำอย่างไรกับพวกเขาหรือจะปิดพวกเขา โปรแกรมคาดหวังให้ทำงานในสภาพแวดล้อมที่มีตัวแปรที่พวกเขาไม่รู้หรือสนใจดังนั้นพวกเขาจะไม่เขียนทับหรือลบทิ้ง
ทางเลือกในการใช้ชื่อฟังก์ชั่นเป็นชื่อของตัวแปรสภาพแวดล้อมเป็นสิ่งที่แปลก สำหรับสิ่งหนึ่งนั่นหมายความว่าตัวแปรที่ส่งออกขัดแย้งกับฟังก์ชันที่ส่งออกที่มีชื่อเดียวกัน
ฟังก์ชั่นที่ส่งออกเป็นคุณสมบัติเก่า มีการเพิ่มฟังก์ชั่นในเชลล์เป้าหมายใน SVR2และฟังก์ชั่นที่ส่งออกในเชลล์เวอร์ชัน 8เปิดตัวในปีเดียวกัน (1984) ในเชลล์นั้นตัวแปรและฟังก์ชั่นใช้เนมสเปซเดียวกัน ฉันไม่รู้ว่าการส่งออกฟังก์ชั่นทำงานอย่างไร Heirloom เปลือกจะขึ้นอยู่กับตัวแปรบอร์นซึ่งมีฟังก์ชั่น แต่ไม่ได้ส่งออก
ATT ksh ควรรองรับฟังก์ชั่นการส่งออก แต่เมื่อดูที่แหล่งที่มาหรือเล่นกับมันฉันไม่เห็นว่ามันจะเป็นเช่นนั้นในฐานะของ 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
โคลโดเมนสาธารณะของ Ksh (pdksh, mksh), ขีดกลางและ zsh ไม่รองรับฟังก์ชั่นการส่งออก