ผมเคยเห็นในหลายสถานที่รวมถึงคำแนะนำในเว็บไซต์นี้ ( อะไรคือสิ่งที่ต้องการ 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/shbashbash/bin/bin/shbash
/bin/bashไม่ได้ โดยค่าเริ่มต้น Bash จะไม่ถูกติดตั้ง pkg install bashหากคุณต้องการมันคุณจะต้อง /usr/local/bin/bashเมื่อติดตั้งแล้วมันจะอยู่ที่ ไม่มีสิ่งใดติดตั้ง/bin/bashใน OpenBSD Shebang of #!/bin/bashwill เกิดข้อผิดพลาดและ#!/usr/bin/env bashจะประสบความสำเร็จ