เมื่อคุณสร้างเชลล์สคริปต์ใหม่คุณต้องการตรวจสอบให้แน่ใจว่าปราศจากปัญหามากที่สุดเท่าที่จะเป็นไปได้ แต่บางครั้งก็อาจจะสับสนเล็กน้อยที่ทราบว่า Shebang ใดดีที่สุดสำหรับคุณที่จะใช้ โปรดทราบว่าโพสต์ SuperUser Q&A ของวันนี้มีคำตอบสำหรับคำถามของผู้อ่านที่สับสน
เซสชันคำถามและคำตอบของวันนี้มาถึงเราโดย SuperUser ซึ่งเป็นแผนกย่อยของ Stack Exchange ซึ่งเป็นกลุ่มที่ขับเคลื่อนด้วยชุมชนของเว็บไซต์ถามตอบ
คำถาม
ผู้อ่าน SuperUser Hendre ต้องการทราบว่าเมื่อใดควรใช้งานได้ดีกว่า #! / bin / ทุบตี แทน #! / bin / ดวลจุดโทษ ในเชลล์สคริปต์:
เมื่อใดจึงเหมาะสมกว่าที่จะใช้ #! / bin / ทุบตี ค่อนข้างมากกว่า #! / bin / ดวลจุดโทษ ในเชลล์สคริปต์?
ควรใช้เมื่อใด #! / bin / ทุบตี แทน #! / bin / ดวลจุดโทษ ในเชลล์สคริปต์?
คำตอบ
grawity ผู้สนับสนุน SuperUser มีคำตอบสำหรับเรา:
ในระยะสั้น:
- มีเชลล์หลายตัวที่ใช้ superset ของข้อกำหนด POSIX sh ในระบบต่างๆ / bin / sh อาจเป็นลิงค์ไปยัง ash, bash, dash, ksh, zsh เป็นต้นซึ่งจะเข้ากันได้กับ sh เสมอไม่เคย csh หรือ fish
- ตราบใดที่คุณยึดติดกับคุณสมบัติเฉพาะของ sh เท่านั้นคุณก็สามารถใช้ได้ #! / bin / ดวลจุดโทษ และสคริปต์ควรทำงานได้ดีไม่ว่าจะเป็นเชลล์ใดก็ตาม
- หากคุณเริ่มใช้คุณลักษณะเฉพาะ bash (เช่นอาร์เรย์) คุณควรขอ bash เป็นพิเศษเพราะแม้ว่า / bin / sh เรียกใช้ bash ในระบบของคุณอยู่แล้วซึ่งอาจไม่ได้อยู่ในระบบของคนอื่นและสคริปต์ของคุณจะไม่ทำงานที่นั่น เช่นเดียวกับ zsh และ ksh แน่นอน
- แม้ว่าสคริปต์จะใช้สำหรับการใช้งานส่วนบุคคลเท่านั้นคุณอาจสังเกตเห็นว่าระบบปฏิบัติการบางระบบเปลี่ยนแปลงไป / bin / sh ระหว่างการอัพเกรด ตัวอย่างเช่นบน Debian เคยเป็น bash แต่ต่อมาถูกแทนที่ด้วยเส้นประที่น้อยที่สุด สคริปต์ที่ใช้ bashisms แต่มีไฟล์ #! / bin / ดวลจุดโทษ จู่ๆก็แตก
อย่างไรก็ตาม:
- แม้ #! / bin / ทุบตี ไม่ถูกต้อง ในระบบที่แตกต่างกัน bash อาจอยู่ใน / usr / bin, / usr / pkg / bin, หรือ / usr / local / bin.
- ตัวเลือกที่น่าเชื่อถือกว่าคือ #! / usr / bin / env bashซึ่งใช้ $ PATH. แม้ว่าเครื่องมือ env จะไม่ได้รับการรับรองอย่างเคร่งครัดเช่นกัน / usr / bin / env ยังคงใช้งานได้กับระบบต่างๆมากกว่า / bin / bash ทำ.
มีสิ่งที่จะเพิ่มคำอธิบายหรือไม่ ปิดเสียงในความคิดเห็น ต้องการอ่านคำตอบเพิ่มเติมจากผู้ใช้ Stack Exchange คนอื่นหรือไม่? ลองอ่านหัวข้อสนทนาเต็มได้ที่นี่
เครดิตรูปภาพ: Wikipedia