30Jul

Kapan Lebih Baik Gunakan #!/bin/ bash Alih-alih #!/bin/ sh di Shell Script?

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