这两条线有什么区别?
#!/usr/bin/python
#!/usr/bin/env python
这与 Python 本身无关,更多的是与shebang 线的工作方式有关。
在许多类 UNIX 系统中,您需要在 shebang 行上提供绝对路径名,例如/usr/bin/python
.
但是,当您将该脚本移动到目录中包含 Pyyhon的另一/usr/local/bin
台机器时会发生什么?不会的,就是这样。或者,即使您只是想在$HOME/python/bin
测试中使用不同的 Python 解释器,您也需要更改 shebang 行。
env
是一种解决方法。由于它通常总是in /usr/bin
,因此您可以安全地将其作为绝对路径包含在 shebang 行中。
在这种情况下,env
命令本身会搜索路径python
并运行该可执行文件。
该命令实际上可以做的还env
不止这些,它可以打印环境env
(在一个固定的位置。env xyzzy=plugh myprog