为什么'#!/ 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