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

72 投票
5 回答
39455 浏览
提问于 2025-04-15 13:57

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

5 个回答

10

它会在你的环境中找到Python的可执行文件并使用它。这样做更灵活,因为Python不一定总是在/usr/bin/python这个位置。而env总是位于/usr/bin目录下。

24

来自 维基百科

Shebang(也叫做“井号”)是用来指定系统可执行文件的绝对路径的;这在文件系统布局不标准的系统上可能会引发问题。

通常,可以使用程序 /usr/bin/env 来绕过这个限制。

67

如果你喜欢把 Python 安装在你电脑上各种有趣的地方(比如在 Unix 系统中是 $PATH,在 Windows 系统中是 %PATH),那么使用 /usr/bin/env 可以满足你的这种需求(至少在类 Unix 环境中是这样)。而直接使用 /usr/bin/python 就不行了。不过,失去对你的脚本使用哪个版本 Python 的控制可不是一件好事……如果你看看我的代码,你会发现它通常是以 #!/usr/local/bin/python2.5 开头,而不是像 #!/usr/bin/env python 那样开放和包容。因为如果这个脚本很重要,我更喜欢确保它是用我测试和开发过的特定版本来运行,而不是一个半随机的版本;-)。

撰写回答