ผมเคยเห็นในหลายสถานที่รวมถึงคำแนะนำในเว็บไซต์นี้ ( อะไรคือสิ่งที่ต้องการ shebang ทุบตี? ) เพื่อใช้ในการตั้งค่า#!/usr/bin/env bash
#!/bin/bash
ผมเคยเห็นแม้กระทั่งบุคคลกล้าได้กล้าเสียหนึ่งแนะนำให้ใช้#!/bin/bash
เป็นที่ไม่ถูกต้องและการทำงานทุบตีจะหายไปโดยการทำเช่นนั้น
จากทั้งหมดที่กล่าวมาฉันใช้ bash ในสภาพแวดล้อมการทดสอบที่ควบคุมอย่างเข้มงวดโดยที่ไดรฟ์ทุกตัวในการหมุนเวียนนั้นเป็นโคลนของไดรฟ์หลักเพียงตัวเดียว ฉันเข้าใจข้อโต้แย้งการพกพาแม้ว่าจะไม่จำเป็นต้องใช้ในกรณีของฉัน มีเหตุผลอื่นอีกหรือไม่ที่จะ#!/usr/bin/env bash
เลือกทางเลือกอื่น ๆ และหากการพกพานั้นเป็นเรื่องที่น่ากังวล
env
/usr/bin
ความคิดเห็นของ Shebang นั้นเป็นความคิดที่ไม่ดีเลย หากล่ามสคริปต์เริ่มต้นของคุณไม่จัดการกับความคิดเห็น shebang นั่นเป็นเพียงความคิดเห็น อย่างไรก็ตามถ้าคุณรู้ว่าล่ามสคริปต์สามารถจัดการกับความคิดเห็น Shebang และคุณรู้เส้นทางที่จะทุบตีไม่มีเหตุผลที่จะไม่เรียกมันโดยใช้เส้นทางที่แน่นอนของมันเว้นแต่เส้นทางยาวเกินไป (ไม่น่าจะ) หรือคุณอาจจะย้ายสคริปต์ ไปยังระบบที่ไม่มี bash อยู่ใน / bin จากนั้นอีกครั้ง caveats ที่ฉันกล่าวถึงก่อนหน้านี้ใช้ในกรณีนั้นเนื่องจากเกี่ยวข้องกับการพกพา
/etc
เป็นส่วนเสริมสำหรับ Unix ส่วนใหญ่เช่นระบบ มันเป็นเพียงลินุกซ์ที่รับประกันได้ว่าจะในและส่วนใหญ่ยังเชื่อมโยงเป็น เนื่องจากลีนุกซ์ได้กลายเป็นระบบปฏิบัติการยูนิกซ์สมัยใหม่สำหรับคนจำนวนมากความจริงที่ว่าระบบอื่นที่นอกเหนือจากลีนุกซ์อาจถูกลืมไปแล้ว. ในคำตอบของตัวเองดังต่อไปนี้ผมถือว่าลินุกซ์เพราะคุณกล่าวว่า กล่อง BSD จำนวนมากที่ฉันทำงานด้วยไม่ได้ติดตั้งเลย /bin/sh
bash
bash
/bin
/bin/sh
bash
/bin/bash
ไม่ได้ โดยค่าเริ่มต้น Bash จะไม่ถูกติดตั้ง pkg install bash
หากคุณต้องการมันคุณจะต้อง /usr/local/bin/bash
เมื่อติดตั้งแล้วมันจะอยู่ที่ ไม่มีสิ่งใดติดตั้ง/bin/bash
ใน OpenBSD Shebang of #!/bin/bash
will เกิดข้อผิดพลาดและ#!/usr/bin/env bash
จะประสบความสำเร็จ