Saya telah melihat di sejumlah tempat, termasuk rekomendasi di situs ini ( Apa yang disukai Bash shebang? ), Untuk digunakan #!/usr/bin/env bash
sebagai preferensi #!/bin/bash
. Saya bahkan telah melihat satu individu yang giat menyarankan penggunaan #!/bin/bash
yang 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 bash
daripada alternatif dan, dengan asumsi portabilitas menjadi perhatian, apakah ada alasan menggunakannya dapat merusak fungsi?
env
mungkin 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.
/etc
atau /bin/sh
. bash
adalah add-on untuk sebagian besar sistem seperti Unix. Ini hanya Linux di mana bash
dijamin berada /bin
dan 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/bash
OpenBSD. Kerinduan #!/bin/bash
kehendak kesalahan, dan #!/usr/bin/env bash
akan berhasil.