Cara mengetahui apakah skrip shell ditulis dalam bash atau sh

8

Bagaimana saya bisa mengetahui apakah suatu skrip ditulis dalam bashatau sh?

Baris pertama skrip tidak membantu di sini, karena di Linux, skrip bash memiliki baris ini: #!bin/sh

Sebenarnya, ada banyak distribusi di mana /bin/shbash (mungkin /bin/shmerupakan tautan ke /bin/bashdalam distribusi itu), dan bukan Bourne Shell. Jadi jika saya mencoba menjalankan skrip yang ditulis dalam bash in, misalnya, FreeBSD, hasilnya tidak didefinisikan, karena /bin/shdi FreeBSD adalah Bourne Shell, dan bukan bash.

Apakah ada cara mudah untuk mengidentifikasi apakah skrip bash atau sh?

Apakah ada beberapa hal khusus dalam sintaksis?

pengguna1115057
sumber
3
Lihat Bashisms di Wiki Greg ...
jasonwryan

Jawaban:

15

Sebenarnya garis shebang berarti sesuatu karena beberapa distribusi seperti Debian tidak digunakan bashuntuk /bin/shtetapi dash.

Solusi paling sederhana untuk menentukan apakah skrip shell adalah bash adalah dengan menggunakan checkbashism- lihat man checkbashismsdetailnya.

checkbashismsharus dikemas dengan distribusi yang berbeda, untuk Debian ada dalam devscriptspaket - Fedora di devscripts-minimal(dulu rpmdevtools) dan OpenSuSe dirpmlint-mini

Ulrich Dangel
sumber