python腳本文件的第一行通常會寫成如下的形式抬探,
!/usr/bin/python
or
!/usr/bin/env python
它們用于指定執(zhí)行該腳本的解釋器子巾,如上即是指定python作為解釋器。在計算機科學中這有個專門的術語小压,叫做shebang线梗,可見其使用之廣泛。
在計算機科學中怠益,Shebang是一個由井號和嘆號構成的字符串行仪搔,其出現(xiàn)在文本文件的第一行的前兩個字符。 在文件中存在Shebang的情況下蜻牢,類Unix操作系統(tǒng)的程序載入器會分析Shebang后的內(nèi)容烤咧,將這些內(nèi)容作為解釋器指令,并調(diào)用該指令抢呆,并將載有Shebang的文件路徑作為該解釋器的參數(shù)煮嫌。
那么一開始的兩種寫法有什么區(qū)別呢?
如果直接采用 python file.py 的方式運行腳本的話抱虐,有沒有shebang都無所謂昌阿,因為我們自己直接指定了該腳本的解釋器,即python。但是宝泵,如果以 ./file.py 的方式運行的話好啰,一開始的兩種寫法就有一些區(qū)別了。
通常我們認為 #!/usr/bin/python
采用了絕對路徑的寫法儿奶,即指定了采用/usr/bin/python 解釋器來執(zhí)行該腳本框往。一般類Unix系統(tǒng)下,python解釋器都位于該路徑闯捎,不幸的是如果python解釋器不在該路徑下的話椰弊,./file.py 就無法運行。而 #!/usr/bin/env python
的寫法指定從PATH環(huán)境變量中來查找python解釋器的位置瓤鼻,因此只要環(huán)境變量中存在秉版,該腳本即可執(zhí)行。
綜述所述茬祷,一般情況下采用 #!/usr/bin/env python
的寫法更好清焕,更加具有通用性。