ในกรณีที่ทุกคนมีความสนใจในการศึกษาเพิ่มเติมและ / หรือการชี้แจง: ในเชลล์ที่เข้ากันได้กับ POSIX เกือบจะถูกนำมาใช้ในขณะที่ผ่านมาการทำงานภายในของฟังก์ชัน 'exec_program ()' และ 'builtin_source ()' เป็นตัวอย่างที่ดีมาก ในฟังก์ชั่นเหล่านั้นคุณจะเห็นว่าอะไรคือความแตกต่างระหว่างพวกเขา:
https://github.com/rsenn/shish/blob/master/src/builtin/builtin_source.c
https://github.com/rsenn/shish/blob/master/src/exec/exec_program.c
โดยทั่วไปการจัดหาสามารถมองเห็นได้เป็นเชลล์เปลี่ยนเส้นทางตัวบ่งชี้ไฟล์ภายในของมันชั่วคราวซึ่งจะแยกวิเคราะห์เชลล์สคริปต์จาก (เทอร์มินัลในโหมดโต้ตอบ) ดังนั้นมันจะคล้ายกับการเปลี่ยนเส้นทางอื่น ๆ เช่น<input_file.txt
และ>>append_to_something.list
และสิ่งเหล่านี้ก็ต้องเปิดและปิดไฟล์
ดังนั้นการดำเนินการจะถูกจัดการโดยการexecve()
เรียกของระบบซึ่งจำเป็นต้องใช้บิตการดำเนินการ
ฉันจำได้ว่าเห็นบางระบบที่อนุญาตให้ทำการประมวลผลของ ELF / a.out ไบนารี แต่ผ่านการดำเนินการ "/lib/ld-dynamic-linker.so" และด้วยโปรแกรมไบนารี (โดยไม่มีบิตบิต) เป็นอาร์กิวเมนต์แรก ฉันเชื่อว่าเป็นบนเครื่อง DEC Alpha หรือ VAX บางเครื่อง (เป็น SCO Unix หรือไม่)
chmod
สามารถให้คุณตั้งค่าการอนุญาต (รวมถึง `x) ด้วยหมายเลขฐานแปดให้เบาะแสกับยุคที่มา ผมจะไม่แปลกใจถ้ามันเริ่มเป็นรวดเร็วและสกปรก "นี้เป็นแฟ้มไบนารีคุณสามารถดำเนินการ" ตัวบ่งชี้จากวันก่อนที่เธอจะปังถูกคิดค้น แต่ฉันไม่มีหลักฐานว่า