比如我们有一个python文件temp.py。
print(1+1)
通常我们这样执行它python3 temp.py
假如有一个shell脚本temp.sh,它有执行权限后可以用./temp.sh
来执行。
如何使./temp.py
也能正确执行呢?
#!/usr/bin/env python3
print(1+1)
在文件头部加上一行注释,再用chmod +x temp.py
给文件执行权限就可以了。
这样我们运行./temp.py
就如同运行/usr/bin/env python3 temp.py
那/usr/bin/env python3是什么意思呢?
/usr/bin/env是系统自带的一个程序,它的作用是在当前用户的执行环境中,通常也就是PATH指定的目录中,寻找指定的程序,一旦找到第一个就停止寻找。所以执行./temp.py
后,/usr/bin/env在PATH中寻找名字为python3的程序,找到后就用它来运行temp.py这个文件。
如何明确指定python程序位置?
#!/usr/bin/python3
print(1+1)
这样就直接用/usr/bin/python3这个程序来执行这个文件,不用事先在环境变量中搜寻python的位置了。
而在命令行中直接运行python3 temp.py
与第一种写法效果相同。
直接运行/usr/bin/python3 temp.py
与第二种写法相同。