อะไรคือความแตกต่างระหว่างการเรียกใช้งานสคริปต์ (เช่น / some / script) กับsource /some/scriptและ. /some/scriptใน Bash?
อะไรคือความแตกต่างระหว่างการเรียกใช้งานสคริปต์ (เช่น / some / script) กับsource /some/scriptและ. /some/scriptใน Bash?
คำตอบ:
sourceและ.มีความหมายเหมือนในทุบตี
สำหรับทุกคนที่อาจต้องการตรวจสอบว่าคำสั่งที่เป็นเพียงคำพ้องความหมายและไม่มีอะไรเพิ่มเติมให้ดูที่รหัสที่มากล่าวว่าสำหรับรุ่น 4.3 builtins/source.defและตรวจสอบไฟล์ คุณจะอ่านว่าทั้งสองของคำสั่งในตัว, sourceและใช้ฟังก์ชันเดียวกันมาก:.source_builtin
.เป็นคำสั่งแหล่งดั้งเดิมสืบทอดมาจากเปลือก bourne โบราณ sourceเป็นเพียงทุบตีในตัวที่ไม่เหมือนกับ.สันนิษฐานว่าเป็นเพราะมันสามารถอ่านได้มากขึ้น ( .คนเดียวอาจจะยากที่จะมองเห็นด้วยตัวอักษรขนาดเล็ก) คุณจะเห็นhelp sourceและhelp .แสดงข้อมูลเดียวกัน
man bashแล้วค้นหาsourceคุณจะเห็นว่าเป็นคำพ้องสำหรับsource filename [arguments] . filename [arguments]
.มีความหมายเหมือนกันกับsourceในทุบตี แต่ไม่ใช่ใน POSIX sh ดังนั้นคุณควรใช้.ถ้าสคริปต์ของคุณถูกเรียกใช้โดย / bin / sh โปรดทราบว่า bash อ้างว่าทำงานเหมือน POSIX sh เมื่อถูกเรียกเป็น / bin / sh แต่ยอมรับsourceโดยไม่มีการร้องเรียน
พฤติกรรมนี้กัดฉันสคริปต์ทดสอบกับ bash เป็น / bin / sh ล้มเหลวเมื่อทำงานภายใต้เถ้าตัวอย่างเช่น
#!/bin/shคุณไม่ควรถือว่าเชลล์สนับสนุนอะไรเลยนอกจากคุณสมบัติ POSIX pubs.opengroup.org/onlinepubs/9699919799/utilities/…