มันทำงานเพราะไฟล์ปฏิบัติการเริ่มต้นจะถือว่าเป็น / bin / sh สคริปต์ นั่นคือถ้าคุณไม่ได้ระบุเปลือกเฉพาะใด ๆ - มันคือ #! / bin / sh
// ถูกเพิกเฉยในพา ธ - คุณสามารถพิจารณาได้ว่าอยู่ที่เดียว '/'
ดังนั้นคุณสามารถพิจารณาว่าคุณมีเชลล์สคริปต์ที่มีบรรทัดแรก:
/usr/bin/env go run $0 $@ ; exit
บรรทัดนี้ทำอะไร มันทำงาน 'env' โดยมี paramenters 'go run $ 0 $ @' there 'go' is command และ 'run $ 0 $ @' เป็น args และออกจากสคริปต์หลังจากนั้น $ 0 เป็นชื่อสคริปต์นี้ $ @ เป็นอาร์กิวเมนต์สคริปต์ดั้งเดิม ดังนั้นบรรทัดนี้จะทำงานซึ่งสคริปต์นี้มีอาร์กิวเมนต์
มีรายละเอียดที่น่าสนใจตามที่ระบุไว้ในความคิดเห็นว่าสแลชสองรายการมีการกำหนดการใช้งานและสคริปต์นี้จะกลายเป็น POSIX ที่ถูกต้องหากระบุสแลชสามรายการขึ้นไป อ้างถึงhttp://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap04.htmlสำหรับรายละเอียดเกี่ยวกับวิธีจัดการสแลชในพา ธ
โปรดทราบด้วยว่ามีความผิดพลาดอีกอย่างในสคริปต์ที่ $ @ ถูกต้องในการใช้ "$ @" แทนเพราะมิฉะนั้นหากมีพารามิเตอร์ใด ๆ ที่มีช่องว่างมันจะถูกแบ่งออกเป็นหลายพารามิเตอร์ ตัวอย่างเช่นคุณไม่สามารถส่งชื่อไฟล์ด้วยช่องว่างได้หากคุณไม่ได้ใช้ "$ @"
เห็นได้ชัดว่าสคริปต์นี้ขึ้นอยู่กับความคิดที่ว่า '//' เท่ากับ '/'
//&>/dev/null;x="${0%.*}";[ ! "$x" -ot "$0" ]||(rm -f "$x";cc -o "$x" "$0")&&exec "$x" "$@"
...