这两行有什么区别?
#!/usr/bin/python
#!/usr/bin/env python
这与Python本身无关,更多的是与shebang行的工作方式有关。
在许多类unix系统中,您需要在shebang行上给出绝对路径名,例如/usr/bin/python
。但是,当您将该脚本移动到/usr/local/bin
目录中有python的不同的机器时会发生什么?这行不通,就是这样。或者,即使您只是想在$HOME/python/bin
中使用不同的Python解释器进行测试,也需要更改shebang行。
env
是一种绕过这种情况的方法。因为在/usr/bin
中它通常是总是,所以你可以安全地将它作为绝对路径包含在shebang行中。
在这种情况下,env
命令本身搜索python
的路径并运行该可执行文件。
env
命令实际上可以做更多的事情,它可以打印环境(env
),或者可以为特定进程临时修改环境(env xyzzy=plugh myprog
),但是,在这个特殊的情况下,它只是让您能够在路径之外运行Python,而不是在固定位置。