比如我們有一個(gè)python文件temp.py。
print(1+1)
通常我們這樣執(zhí)行它python3 temp.py
假如有一個(gè)shell腳本temp.sh,它有執(zhí)行權(quán)限后可以用./temp.sh來執(zhí)行。
如何使./temp.py也能正確執(zhí)行呢?
#!/usr/bin/env python3
print(1+1)
在文件頭部加上一行注釋,再用chmod +x temp.py給文件執(zhí)行權(quán)限就可以了。
這樣我們運(yùn)行./temp.py就如同運(yùn)行/usr/bin/env python3 temp.py
那/usr/bin/env python3是什么意思呢?
/usr/bin/env是系統(tǒng)自帶的一個(gè)程序,它的作用是在當(dāng)前用戶的執(zhí)行環(huán)境中,通常也就是PATH指定的目錄中,尋找指定的程序,一旦找到第一個(gè)就停止尋找。所以執(zhí)行./temp.py后,/usr/bin/env在PATH中尋找名字為python3的程序,找到后就用它來運(yùn)行temp.py這個(gè)文件。
如何明確指定python程序位置?
#!/usr/bin/python3
print(1+1)
這樣就直接用/usr/bin/python3這個(gè)程序來執(zhí)行這個(gè)文件,不用事先在環(huán)境變量中搜尋python的位置了。
而在命令行中直接運(yùn)行python3 temp.py與第一種寫法效果相同。
直接運(yùn)行/usr/bin/python3 temp.py與第二種寫法相同。