Answers:
某些人可能使用与系统不同的python(perl等)。/usr/bin/env python将运行配置为当前版本的版本,可能会使脚本更具可移植性。
另一方面,据报道,某些系统没有/usr/bin/env。另外,您不能将#!/usr/bin/env foo x用作替代#!foo x,因为foo x它将被解释为单个参数。因此,该方法的价值值得商bat。
info coreutils 'env invocation'我可以看到,这种形式的调用可确保它是外部二进制文件,而不是内置的shell,但没有迹象表明env python与python?有什么不同?
                    PATH可能包括/usr/local/bin第一个。如果有人在那里手动安装了python,env则将其调用,而#!/usr/bin/python绕过它。
                    virtualenv是一个非常流行的工具,它在工作目录中安装了python可执行文件。您将需要env技巧来使其正常工作。
                    env python与相同python。但是,问题在于您不能像这样编写shebang #!python:您需要指定完整路径。