为什么'#!/ usr / bin / env python'比'#!/ usr / bin / python'更正确呢?

任何人都知道吗? 我从来没有find答案。

如果你很容易在PATH上的各种有趣的地方安装python(比如典型的Unix shell中的$PATH ,典型的Windows中的%PATH ),使用/usr/bin/env将容纳你的奇思妙想(在Unix至less在直接进入/usr/bin/python不会。 但是失去对脚本所运行的Python版本的控制,并不是非合作的讨价还价……如果你看看我的代码,你更有可能看到它开始,例如#!/usr/local/bin/python2.5而不是打开并接受#!/usr/bin/env python – 假设脚本是重要的,我想确保它与我testing过的特定版本一起运行,而不是一个半随机的;-) 。

从维基百科

Shebangs指定系统可执行文件的绝对path; 这可能会导致在具有非标准文件系统布局的系统上出现问题

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

它会在您的环境中findpython可执行文件并使用它。 它更便于携带,因为python可能并不总是在/ usr / bin / python中。 env始终位于/ usr / bin中。

它也在/ usr / local / bin,〜/ bin,/ opt / bin,…或任何可能隐藏的地方find“python”。

你可能会觉得这篇文章很有趣: http : //mail.python.org/pipermail/python-list/2008-May/661514.html

这可能是一个更好的解释: http : //mail.python.org/pipermail/tutor/2007-June/054816.html