30Jul
Saat Anda membuat skrip shell baru, Anda ingin memastikannya bebas masalah, tapi kadang-kadang bisa sedikit membingungkan untuk mengetahui shebang mana yang terbaik untuk Anda gunakan. Pada catatan itu, Q & SuperUser terbaru memiliki jawaban atas pertanyaan pembaca yang membingungkan.
Pertanyaan Hari Ini &Sesi jawaban datang kepada kami atas izin SuperUser - subdivisi dari Stack Exchange, pengelompokan berbasis komunitas dari Q & A situs web.
Pertanyaan Pembaca superuser
Hendre ingin tahu kapan sebaiknya menggunakan #!/bin/ bash bukan #!/bin/ sh dalam skrip shell:
Kapan lebih tepat untuk menggunakan #!/bin/ bash daripada #!/bin/ sh dalam skrip shell?
Kapan lebih baik menggunakan #!/bin/ bash bukan #!/bin/ sh dalam skrip shell?
Jawaban
SuperUser kontributor grawity memiliki jawaban untuk kita:
Singkatnya:
- Ada beberapa kerang yang menerapkan superset spesifikasi POSIX sh. Pada sistem yang berbeda, /bin/ sh mungkin merupakan penghubung dengan abu, bash, dash, ksh, zsh, dll. Akan selalu kompatibel dengan sh, tidak pernah csh atau ikan.
- Selama Anda tetap menyukai fitur sh, Anda bisa( dan mungkin juga harus) menggunakan #!/bin/ sh dan skripnya harus bekerja dengan baik, tidak peduli yang shell itu.
- Jika Anda mulai menggunakan fitur bash-specific( yaitu array), Anda harus secara khusus meminta bash karena, walaupun /bin/ sh telah memanggil bash di sistem Anda, mungkin tidak pada sistem orang lain, dan skrip Anda tidak akan berjalan di sana. Hal yang sama berlaku untuk zsh dan ksh, tentu saja.
- Sekalipun skripnya hanya untuk penggunaan pribadi, Anda mungkin memperhatikan bahwa beberapa sistem operasi mengubah /bin/ sh selama peningkatan versi. Sebagai contoh, pada Debian itu dulu bash, tapi kemudian diganti dengan dash sangat minim. Script yang menggunakan bashisms tapi punya #!/bin/ sh tiba-tiba bangkrut.
Namun:
- Bahkan #!/bin/ bash tidak begitu benar. Pada sistem yang berbeda, bash mungkin tinggal di /usr/ bin , /usr/pkg/ bin , atau /usr/local/ bin .
- Pilihan yang lebih andal adalah #!/usr/bin/ env bash , yang menggunakan $ PATH .Meskipun alat env sendiri tidak dijamin secara ketat, /usr/bin/ env masih bekerja pada sistem yang lebih banyak daripada /bin/ bash .
Punya sesuatu untuk ditambahkan ke penjelasan? Terdengar dalam komentar. Ingin membaca lebih banyak jawaban dari pengguna Stack Exchange tech-savvy lainnya? Simak thread diskusi selengkapnya disini.
Gambar Kredit: Wikipedia