#!/usr/bin/python 與#!/usr/bin/env python的區(qū)別


python腳本文件的第一行通常會(huì)寫(xiě)成如下的形式,

!/usr/bin/python

or

!/usr/bin/env python

它們用于指定執(zhí)行該腳本的解釋器,如上即是指定python作為解釋器。在計(jì)算機(jī)科學(xué)中這有個(gè)專(zhuān)門(mén)的術(shù)語(yǔ),叫做shebang,可見(jiàn)其使用之廣泛。

在計(jì)算機(jī)科學(xué)中,Shebang是一個(gè)由井號(hào)和嘆號(hào)構(gòu)成的字符串行,其出現(xiàn)在文本文件的第一行的前兩個(gè)字符。 在文件中存在Shebang的情況下,類(lèi)Unix操作系統(tǒng)的程序載入器會(huì)分析Shebang后的內(nèi)容,將這些內(nèi)容作為解釋器指令,并調(diào)用該指令,并將載有Shebang的文件路徑作為該解釋器的參數(shù)。

那么一開(kāi)始的兩種寫(xiě)法有什么區(qū)別呢?
如果直接采用 python file.py 的方式運(yùn)行腳本的話(huà),有沒(méi)有shebang都無(wú)所謂,因?yàn)槲覀冏约褐苯又付嗽撃_本的解釋器,即python。但是,如果以 ./file.py 的方式運(yùn)行的話(huà),一開(kāi)始的兩種寫(xiě)法就有一些區(qū)別了。
通常我們認(rèn)為 #!/usr/bin/python 采用了絕對(duì)路徑的寫(xiě)法,即指定了采用/usr/bin/python 解釋器來(lái)執(zhí)行該腳本。一般類(lèi)Unix系統(tǒng)下,python解釋器都位于該路徑,不幸的是如果python解釋器不在該路徑下的話(huà),./file.py 就無(wú)法運(yùn)行。而 #!/usr/bin/env python 的寫(xiě)法指定從PATH環(huán)境變量中來(lái)查找python解釋器的位置,因此只要環(huán)境變量中存在,該腳本即可執(zhí)行。
綜述所述,一般情況下采用 #!/usr/bin/env python 的寫(xiě)法更好,更加具有通用性。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本節(jié)內(nèi)容 Python介紹 發(fā)展史 Python 2 or 3? 安裝 Hello World程序 變量 用戶(hù)輸入...
    小小不懂11閱讀 3,532評(píng)論 2 30
  • 個(gè)人筆記,方便自己查閱使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik閱讀 67,937評(píng)論 0 5
  • 筆者按:好的婚姻會(huì)綻放每個(gè)人完美的一面,壞的婚姻會(huì)激發(fā)每個(gè)人丑惡的一面。真正的門(mén)當(dāng)戶(hù)對(duì)是精神上的門(mén)當(dāng)戶(hù)對(duì),是心靈相...
    展笑顏開(kāi)閱讀 1,251評(píng)論 0 2
  • 網(wǎng)絡(luò)中四 10月15日 持續(xù)分享第96天 耽擱了很久的約練趁周末抓緊補(bǔ)上。感激伙伴的成全,給我機(jī)會(huì)做咨詢(xún)師。也...
    xfsunshine閱讀 237評(píng)論 0 3
  • 緩沖區(qū) 前面的例子沒(méi)有超出標(biāo)準(zhǔn)的讀/寫(xiě)過(guò)程種類(lèi),在原來(lái)的 I/O 中可以像在 NIO 中一樣容易地實(shí)現(xiàn)這樣的標(biāo)準(zhǔn)讀...
    甚了閱讀 516評(píng)論 0 0

友情鏈接更多精彩內(nèi)容