python - shebang


這里簡單介紹一下 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 解釋器,推薦寫法

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM