Saya telah melihat di sejumlah tempat, termasuk rekomendasi di situs ini ( Apa yang disukai Bash shebang? ), Untuk digunakan #!/usr/bin/env bashsebagai preferensi #!/bin/bash. Saya bahkan telah melihat satu individu yang giat menyarankan penggunaan #!/bin/bashyang salah dan fungsi bash akan hilang dengan melakukannya.
Semua yang dikatakan, saya menggunakan bash dalam lingkungan pengujian yang dikontrol ketat di mana setiap drive yang beredar pada dasarnya adalah tiruan dari master drive tunggal. Saya memahami argumen portabilitas, meskipun tidak selalu berlaku dalam kasus saya. Apakah ada alasan lain untuk memilih #!/usr/bin/env bashdaripada alternatif dan, dengan asumsi portabilitas menjadi perhatian, apakah ada alasan menggunakannya dapat merusak fungsi?
envmungkin tidak ditemukan di /usr/bin. Komentar Shebang sama sekali ide yang buruk IMHO. Jika penerjemah skrip default Anda tidak menangani komentar shebang, itu hanya komentar. Namun, jika Anda tahu juru bahasa skrip dapat menangani komentar shebang, dan Anda tahu jalan menuju bash, tidak ada alasan untuk tidak memintanya menggunakan jalur absolutnya kecuali jika jalurnya terlalu panjang (tidak mungkin), atau Anda mungkin dapat port script ke sistem yang tidak memiliki bash yang terletak di / bin. Kemudian lagi, peringatan yang saya sebutkan sebelumnya berlaku dalam kasus itu karena melibatkan portabilitas.
/etcatau /bin/sh. bashadalah add-on untuk sebagian besar sistem seperti Unix. Ini hanya Linux di mana bashdijamin berada /bindan kemungkinan besar juga terhubung sebagai /bin/sh. Sejak Linux menjadi Unix de facto modern bagi banyak orang, fakta bahwa sistem selain Linux mungkin ada telah dilupakan. Dalam jawaban saya sendiri di bawah ini saya menganggap Linux karena Anda berkata bash. Banyak kotak BSD yang telah saya kerjakan bahkan belum diinstal.
/bin/bash. Bash tidak diinstal secara default. Jika Anda menginginkannya, Anda harus melakukannya pkg install bash. Setelah diinstal itu terletak di /usr/local/bin/bash. Tidak ada yang diinstal di /bin/bashOpenBSD. Kerinduan #!/bin/bashkehendak kesalahan, dan #!/usr/bin/env bashakan berhasil.