2017-05-04 53 views

回答

0

較新的* nix版本將以與which命令相同的方式解決此問題。

它會在所有設置在環境變量$ PATH中的目錄中查找,無論它是否被設置(全局,在.bashrc或其他登錄腳本中或手動)中,一個一個地返回第一個匹配項。

重要的是,一些linux版本創建別名文件(又名符號鏈接),例如, Debian的。

另一個說明:bash命令別名在首先執行時會覆蓋此行爲。

0

本質上喜歡

tail -n +1 yourfile | /usr/bin/env python 
1

env是一個Unix程序的名稱。如果您閱讀手冊(man env),您可以看到一種使用方法是env COMMAND,在您的情況下,COMMANDpython3

根據手冊,這將

設置每個名稱在環境中的價值和運行命令。

單獨運行env將顯示您設置了什麼樣的名稱和值:

$ env 
TERM=xterm-256color 
SHELL=/bin/bash 
PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin 
… 

因此,/usr/bin/env python3是設置PATH(以及所有其他名稱+值對),並指令然後運行python3,使用PATH中的第一個目錄包含python3可執行文件。

+0

'python'退出後,變量是否在本地shell中保留?或者他們只是python本地的? – Pacerier

+0

@Pacerier'env'中的名稱/值對始於shell開始;所以是的,他們堅持殼。 –

0
#!/bin/sh 

是解釋程序二進制文件的唯一路徑,而

#!/usr/bin/env python3 

具有傳遞python3作爲可選參數的#!/usr/bin/env解釋

請參考wiki更多的信息解釋的路徑。