Saya telah melalui beberapa tutorial skrip shell dan menemukan contoh program berikut:
#!/bin/sh
clear
echo "HELLO WORLD"
Adakah yang bisa memberi tahu saya apa pentingnya komentar #!/bin/sh
di awal?
Saya telah melalui beberapa tutorial skrip shell dan menemukan contoh program berikut:
#!/bin/sh
clear
echo "HELLO WORLD"
Adakah yang bisa memberi tahu saya apa pentingnya komentar #!/bin/sh
di awal?
Jawaban:
Ini disebut a shebang , dan memberi tahu induk shell yang mana juru bahasa harus digunakan untuk mengeksekusi skrip.
misalnya
#!/usr/bin/perl <--perl script'
#!/usr/bin/php <-- php script
#!/bin/false <--- do-nothing script, because false returns immediately anyways.
Ini diterapkan sebagai komentar sehingga apa pun yang masuk dalam baris itu tidak akan "relevan" dengan juru bahasa yang ditentukan. mis. semua bahasa scripting cenderung memahami bahwa baris yang dimulai dengan #
adalah komentar, dan akan mengabaikan !/usr/bin/whatever
bagiannya, yang mungkin merupakan kesalahan sintaksis dalam bahasa tersebut.
exec()
sistem pada file.
Ketika Anda mencoba menjalankan sebuah program di unix (satu dengan bit set yang dapat dieksekusi), sistem operasi akan melihat beberapa byte pertama dari file tersebut. Ini membentuk apa yang disebut "angka ajaib", yang dapat digunakan untuk memutuskan format program dan cara menjalankannya.
#!
sesuai dengan angka ajaib 0x2321 (lihat di tabel ascii). Ketika sistem melihat nomor ajaib itu, ia tahu bahwa ia berurusan dengan skrip teks dan membaca hingga yang berikutnya\n
(ada batasnya, tetapi itu lolos dari saya atm). Setelah mengidentifikasi penerjemah (argumen pertama setelah shebang) itu akan memanggil penerjemah.
File lain juga memiliki angka ajaib. Coba lihat file bitmap (.BMP) via less
dan Anda akan melihat dua karakter pertama BM
. Angka ajaib ini menunjukkan bahwa file tersebut memang bitmap.
Jika file yang digunakan skrip ini dapat dieksekusi, hash-bang ( #!
) memberi tahu sistem operasi apa penerjemah yang akan digunakan untuk menjalankan skrip. Dalam hal ini /bin/sh
, misalnya.
Ada artikel Wikipedia tentangnya untuk informasi lebih lanjut.
Baris pertama memberi tahu shell bahwa jika Anda menjalankan skrip secara langsung (./run.sh; sebagai lawan dari / bin / sh run.sh), ia harus menggunakan program itu (/ bin / sh dalam kasus ini) untuk menafsirkannya.
Anda juga dapat menggunakannya untuk meneruskan argumen, biasanya -e (keluar saat kesalahan), atau menggunakan program lain (/ bin / awk, / usr / bin / perl, dll).
#!/bin/sh
atau #!/bin/bash
harus menjadi baris pertama skrip karena jika Anda tidak menggunakannya pada baris pertama maka sistem akan memperlakukan semua perintah dalam skrip tersebut sebagai perintah yang berbeda. Jika baris pertama adalah #!/bin/sh
maka akan menganggap semua perintah sebagai satu skrip dan itu akan menunjukkan bahwa file ini berjalan dalam ps
perintah dan bukan perintah di dalam file.
./echo.sh
ps -ef |grep echo
trainee 3036 2717 0 16:24 pts/0 00:00:00 /bin/sh ./echo.sh
root 3042 2912 0 16:24 pts/1 00:00:00 grep --color=auto echo
ps
, dan kutipan kode seperti #!/bin/sh
harus diformat.