Untuk memahami ini, Anda harus menyadari bahwa baris pertama skrip sebenarnya dibaca dua kali , oleh 2 program yang berbeda. Pertama kali, kernel membuka file dan mencari urutan karakter ( #!
) di baris pertama. Jika menemukannya, ia menjalankan program shell yang ditunjukkan di sana, meneruskan nama file sebagai parameter. (misalnya jika file /home/me/foo
dimulai dengan #!/bin/sh
, kernel akan berjalan /bin/sh /home/me/foo
).
Selanjutnya shell ( bin/sh
atau program penerjemah apa pun ditentukan) membaca file. Shell tidak tahu apa-apa tentang garis shebang tetapi masih akan membaca baris pertama karena sama seperti baris lain dalam file ... ia membaca semuanya. Anda tidak ingin shell crash atau mengubah perilakunya dengan cara apa pun ... cara untuk melakukannya adalah dengan membuatnya memperlakukan sebagai komentar dan abaikan saja. Dengan demikian, karakter terbaik untuk memulai instruksi kernel adalah karakter komentar.
#!
(sebanyak mengingat dmr ...), termasuk penjelasan mengapa#
(ya, garis harus diabaikan oleh cangkang yang ada).