Umumnya, skrip shell berisi komentar berikut di baris pertama file skrip:#!/bin/sh . Menurut penelitian yang saya buat, ini disebut "hash bang" dan itu adalah komentar konvensional. Komentar ini memberi tahu Unix bahwa file ini dieksekusi oleh Bourne Shell di bawah direktori /bin .
Pertanyaan saya dimulai dari titik itu. Sampai sekarang saya belum melihat komentar seperti ini #!/bin/bash . Itu selalu #!/bin/sh . Namun, distribusi Ubuntu tidak memiliki program Bourne Shell. Mereka memiliki Bourne Again Shell (bash).
Pada titik itu, apakah benar untuk menempatkan komentar #!/bin/sh dalam skrip shell yang ditulis dalam distribusi Ubuntu?
Jawaban yang Diterima:
#!/bin/sh harus bekerja pada semua distribusi Unix dan Unix-like. Ini umumnya dianggap sebagai hashbang paling portabel selama skrip Anda tetap sesuai dengan POSIX. /bin/sh shell seharusnya menjadi shell yang mengimplementasikan standar shell POSIX, terlepas dari apa shell sebenarnya yang menyamar sebagai /bin/sh cangkang.
#!/bin/sh biasanya hanya tautan sekarang karena cangkang Bourne tidak lagi dipertahankan. Pada banyak sistem Unix /bin/sh akan menjadi tautan ke /bin/ksh atau /bin/ash , pada banyak sistem Linux berbasis RHEL ini akan menjadi tautan ke /bin/bash , namun pada Ubuntu dan banyak sistem berbasis Debian, ini adalah tautan ke /bin/dash . Semua shell, saat dipanggil sebagai sh , akan memasuki mode kompatibilitas POSIX.
Hashbang adalah pengganti yang penting karena memungkinkan portabilitas yang jauh lebih besar daripada metode lain, selama skrip Anda benar-benar sesuai dengan POSIX (diulang untuk menekankan pentingnya).
Catatan:Saat bash dipanggil dalam mode POSIX itu masih akan mengizinkan beberapa hal non-POSIX seperti [[ , array, dan lainnya. Hal-hal itu mungkin gagal pada non-bash sistem.