Beranda » bagaimana » Kapan Lebih Baik Menggunakan #! / Bin / bash Daripada #! / Bin / sh dalam Shell Script?

    Kapan Lebih Baik Menggunakan #! / Bin / bash Daripada #! / Bin / sh dalam Shell Script?

    Saat Anda membuat skrip shell baru, Anda ingin memastikan skripnya bebas masalah, tetapi kadang-kadang agak membingungkan untuk mengetahui shebang mana yang terbaik untuk Anda gunakan. Pada catatan itu, posting Tanya Jawab Pengguna Super hari ini memiliki jawaban untuk pertanyaan pembaca yang bingung.

    Sesi Tanya Jawab hari ini datang kepada kami berkat SuperUser-subdivisi Stack Exchange, pengelompokan situs web Q&A berbasis komunitas.

    Pertanyaan

    Pembaca SuperUser, Hendre ingin tahu kapan lebih baik digunakan #! / bin / bash dari pada #! / bin / sh dalam skrip shell:

    Kapan lebih tepat untuk digunakan #! / bin / bash daripada #! / bin / sh dalam skrip shell?

    Kapan lebih baik digunakan #! / bin / bash dari pada #! / bin / sh dalam skrip shell?

    Jawabannya

    SuperUser kontributor grawity memiliki jawaban untuk kami:

    Pendeknya:

    • Ada beberapa shell yang mengimplementasikan superset dari spesifikasi sh POSIX. Pada sistem yang berbeda, / bin / sh mungkin tautan ke abu, bash, tanda hubung, ksh, zsh, dll. Akan selalu kompatibel dengan sh, tidak pernah csh atau ikan.
    • Selama Anda tetap menggunakan fitur sh saja, Anda dapat (dan mungkin bahkan harus) menggunakannya #! / bin / sh dan skrip harus bekerja dengan baik, tidak peduli yang shell itu.
    • Jika Anda mulai menggunakan fitur khusus bash (yaitu array), Anda harus secara spesifik meminta bash karena, meskipun / bin / sh sudah memanggil bash di sistem Anda, mungkin tidak di sistem orang lain, dan skrip Anda tidak akan berjalan di sana. Hal yang sama berlaku untuk zsh dan ksh, tentu saja.
    • Bahkan jika skrip ini hanya untuk penggunaan pribadi, Anda mungkin memperhatikan bahwa beberapa sistem operasi berubah / bin / sh selama peningkatan. Misalnya, pada Debian dulu bash, tetapi kemudian diganti dengan tanda hubung yang sangat minimal. Script yang menggunakan bashism tetapi memiliki #! / bin / sh tiba-tiba bangkrut.

    Namun:

    • Bahkan #! / bin / bash itu tidak benar. Pada sistem yang berbeda, bash mungkin hidup / usr / bin, / usr / pkg / bin, atau / usr / local / bin.
    • Opsi yang lebih andal adalah #! / usr / bin / env bash, yang menggunakan $ PATH. Meskipun alat env itu sendiri tidak dijamin ketat juga, / usr / bin / env masih bekerja pada lebih banyak sistem daripada / bin / bash tidak.

    Punya sesuatu untuk ditambahkan ke penjelasan? Berbunyi dalam komentar. Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange yang mengerti teknologi lainnya? Lihat utas diskusi lengkap di sini.

    Kredit Gambar: Wikipedia