为什么“ # !/usr/bin/env python”比“ # !/usr/bin/python”更正确?

有人知道吗? 我一直找不到答案。

38642 次浏览

它还可以在/usr/local/bin、 ~/bin、/opt/bin,... 或者它可能隐藏的任何地方找到“ python”。

如果你倾向于在 PATH 上的各种有趣的地方安装 python (比如在典型的 Unix shell 中的 $PATH,在典型的 Windows shell 中的 %PATH) ,使用 /usr/bin/env可以满足你的心血来潮(至少在类 Unix 的环境中是这样) ,而直接转到 /usr/bin/python则不行。但是失去对你的脚本运行的 Python 版本的控制并不是完全的讨价还价... 如果你看我的代码,你更可能看到它开始,例如,#!/usr/local/bin/python2.5而不是一个开放和接受 #!/usr/bin/env python-假设脚本是重要的,我喜欢确保它运行的特定版本,我已经测试和开发它,而不是一个半随机的; -)。

来自 维基百科

Shebang 指定到系统可执行文件的绝对路径; 这可能导致 非标准文件系统布局系统的问题

通常,可以使用/usr/bin/env 程序来规避这个问题 限制

它在您的环境中找到 python 可执行文件并使用它。它更具可移植性,因为 python 可能并不总是位于/usr/bin/python 中。Env 总是位于/usr/bin 中。