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
:您需要指定完整路径。