为什么'#!/usr/bin/env python' supposedly比'#!/usr/bin/python'更正确?
有人知道这个吗?我一直找不到答案。
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
那样开放和包容。因为如果这个脚本很重要,我更喜欢确保它是用我测试和开发过的特定版本来运行,而不是一个半随机的版本;-)。