答案: 如果您安装了多个版本的Python,/usr/bin/env将确保使用的解释器是您环境中的第一个$PATH。替代方案是硬编码类似的东西#!/usr/bin/python; 没关系,但不太灵活。 在Unix中,一个可以解释的可执行文件可以通过#!在第一行的开头加上解释器(以及它可能需要的任何标志)来指示要使用的解释器。 当然,如果你正在谈论其他平台,这条规则不适用(但“shebang line”没有任何损害,如果你将该脚本复制到具有 Unix基础的平台,例如Linux,Mac ,它将会有所帮助等)。   这被称为shebang线。正如维基百科条目所述: 在计算中,一个shebang(也称为hashbang,hashpling,pound bang或crunchbang)指的是字符“#!” 当它们是解释器指令中的前两个字符作为文本文件的第一行时。在类Unix操作系统中,程序加载器将这两个字符作为文件是脚本的指示,并尝试使用文件中第一行其余部分指定的解释器来执行该脚本。 另请参阅Unix FAQ条目。 即使在Windows上,shebang行也没有确定要运行的解释器,您可以通过在shebang行上指定它们来将选项传递给解释器。我发现在一次性脚本中保留一个通用的shebang系列很有用(例如我在回答问题时写的那些),所以我可以在Windows和ArchLinux上快速测试它们。 该ENV工具可以让你的道路上调用命令: 第一个剩下的参数指定要调用的程序名称; 根据PATH环境变量搜索它。任何剩余的参数都作为参数传递给该程序。 在其他答案上稍微扩展一下,这里有一个小例子,说明你的命令行脚本如何通过谨慎使用/usr/bin/envshebang行来解决问题: $ /usr/local/bin/python -V Python 2.6.4 $ /usr/bin/python -V Python 2.5.1 $ cat my_script.py #!/usr/bin/env python import json print "hello, json" $ PATH=/usr/local/bin:/usr/bin $ ./my_script.py hello, json $ PATH=/usr/bin:/usr/local/bin $ ./my_script.py Traceback (most recent call last): File "./my_script.py", line 2, in