Interpreter Files
Concept
Interpreter files 是一種特殊的文字檔案,它的第一行以 #!(稱為 shebang 或 hashbang)開頭,後面接著一個 interpreter 程式的路徑。這種機制讓作業系統知道應該用哪個程式來執行這個檔案
Structure
假設 script.sh 長這樣
#!/bin/bash
echo "Hello, World!"第一行 #!/bin/bash 就是 shebang line,它告訴系統:「請用 /bin/bash 這個程式來執行我」
Operating Mechanism
當你執行一個有 execute permission 的 interpreter file 時,kernel 會做以下事情:
- 讀取檔案開頭:kernel 檢查檔案的前兩個 bytes
- 辨識 shebang:如果是
#!(0x23 0x21),kernel 知道這是個 interpreter file - 解析路徑:kernel 讀取 shebang 後面的 interpreter 路徑(直到換行或空白)
- 執行 interpreter:kernel 實際上執行的不是原本的 script,而是執行 interpreter,並把 script 的路徑當作參數傳給它
實際上,當你執行:
./myscript.shKernel 內部會轉換成類似:
/bin/bash ./myscript.shWhy use Interpreter Files?
Pros
- 此程式用戶不需要知道要用哪個 interpreter 就可以直接執行程式
- 可以指定特定版本的 interpreter,像 Python3.11、Python 3.12 之類的
Cons
- kernel 會有一點壓力