#!/usr/bin/env python 有什麼用?

我們經常會在別人的腳本或者項目的入口文件裏看到第一行是下面這樣

#!/usr/bin/python

或者這樣

#!/usr/bin/env python

那麼他們有什麼用呢?

要理解它,得把這一行語句拆成兩部分。

第一部分是 #!

第二部分是 /usr/bin/python 或者 /usr/bin/env python

關於 #! 這個符號,其實它是有名字的,叫做 Shebang 或者Sha-bang ,有的翻譯組將它譯作 釋伴,即“解釋伴隨行”的簡稱,同時又是Shebang的音譯。

Shebang通常出現在類Unix系統的腳本中第一行,作爲前兩個字符。在Shebang之後,可以有一個或數個空白字符,後接解釋器的絕對路徑,用於指明執行這個腳本文件的解釋器。

那麼加和不加有什麼區別呢?

如果不加 #! 的話,你每次執行這個腳本時,都得這樣 python xx.py

有沒有一種方式?可以省去每次都加 python 呢?

當然有,你可以文件頭裏加上#!/usr/bin/python ,那麼當這個文件有可執行權限 時,只直接寫這個腳本文件,就像下面這樣。

明白了這個後,再來看看 !/usr/bin/env python 這個 又是什麼意思 ?

當我執行 env python 時,自動進入了 python console 的模式。

這是爲什麼?和 直接執行 python 好像沒什麼區別呀

當你執行 env python 時,它其實會去 env | grep PATH 裏(也就是 /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin )這幾個路徑裏去依次查找名爲python的可執行文件。

找到一個就直接執行,上面我們的 python 路徑是在 /usr/bin/python 裏,在 PATH 列表裏倒數第二個目錄下,所以當我在 /usr/local/sbin 下創建一個名字也爲 python 的可執行文件時,就會執行 /usr/bin/python 了。

具體演示過程,你可以看下面。

那麼對於這兩者,我們應該使用哪個呢?

個人感覺應該優先使用 #!/usr/bin/env python,因爲不是所有的機器的 python 解釋器都是 /usr/bin/python

文末福利

本人原創的 《PyCharm 中文指南》一書前段時間一經發布,就火爆了整個 Python 圈,發佈僅一天的時間,下載量就突破了 1000 ,並且在當天就在 Github 上就收穫了數百的 star,截至目前,下載量已經破萬。

這本書一共將近 200 頁內含大量的圖解製作之精良,值得每個 Python 工程師 人手一份。

爲方便你下載,我將這本書上傳到 百度網盤上了,你可以自行獲取。

鏈接:https://pan.baidu.com/s/1-NzATHFtaTV1MQzek70iUQ

密碼:mft3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章