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

时间:2009-08-30 02:30:30

标签: python bash

有人都知道吗?我从来没有找到答案。

5 个答案:

答案 0 :(得分:66)

如果您倾向于在PATH上的各个有趣位置安装python(如典型Unix shell中$PATH,典型Windows上%PATH),使用/usr/bin/env将容纳你的心血来潮(好吧,至少在类Unix环境中),而直接到/usr/bin/python则不会。但是失去对你的脚本运行的Python版本的控制并不是没有合法的讨价还价...如果你看看我的代码,你更有可能看到它开始,例如,#!/usr/local/bin/python2.5而不是开放和接受#!/usr/bin/env python - 假设脚本很重要,我喜欢确保它使用我测试过的特定版本运行,而不是半随机版本; - )。

答案 1 :(得分:25)

来自wikipedia

  

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

     

通常,程序/ usr / bin / env可用于规避这一点   限制

答案 2 :(得分:10)

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

答案 3 :(得分:5)

它还会在/ usr / local / bin,〜/ bin,/ opt / bin,......或者它可能隐藏的任何地方找到'python'。

答案 4 :(得分:3)