這里簡單介紹一下 Shebang(#!) 的用法
基礎用法
1. 只在 類 Unix 系統中有效,windows 中可以寫,但無效
2. 必須寫在文件 開頭,第一行的前兩個字符
3. shebang 指明了執行這個腳本文件的解釋程序,或者說解釋器
4. 如果 #! 之后的解釋程序是一個可執行文件,那么執行這個腳本時,它就會把文件名及其參數一起作為參數傳給那個解釋程序去執行
5. #! 之后的解釋程序,需要寫其絕對路徑(如:#!/bin/bash),它是不會自動到 $PATH 中尋找解釋器的
異常情況
1. 如果腳本中沒有 #! 指定解釋器,那么它執行時會默認用當前 shell 去解釋這個腳本 (即 $SHELL 環境變量)
2. 如果 #! 指定的解釋器沒有可執行權限,則會報錯 “bad interpreter: Permission denied”
3. 如果 #! 指定的解釋器不是一個可執行文件,那么這句將被忽略,執行時會用 shell 解釋
4. 如果 #! 指定的解釋器不存在,則會報錯 “bad interpreter: No such file or directory”
5. 如果你使用”bash test.sh”這樣的命令來執行腳本,那么 #! 這一行將會被忽略掉,解釋器當然是用命令行中顯式指定的 bash
在 python 中有兩種寫法
#!/usr/bin/python
一般情況下,python 會被安裝到 /usr/bin 目錄下,此時這么寫是可以的;
這種方式相當於寫死了 python 解釋器的路徑;
#!/usr/bin/env python
這種方式是為了防止用戶沒有把 python 安裝到 /usr/bin 目錄下,此時他會到 env 設置里查找 python 的安裝路徑,在調用該路徑下的 python 解釋器執行腳本;
這種方式會自動尋找 python 解釋器,推薦寫法