为什么在 shebang 中使用 env?

为什么在 shebang 中使用 env?

与或相比,使用#!/usr/bin/env <sh|bash|python>shebang的目的是什么?#!/bin/bash#!/bin/sh#!/usr/bin/python

答案1

有些人可能会使用与系统版本不同的 python(perl 等)。/usr/bin/env python将运行配置为当前版本的版本,从而可能使脚本更具可移植性。

另一方面,据报道,有些系统没有/usr/bin/env。另外,您不能使用#!/usr/bin/env foo x来替代#!foo x,因为foo x将被解释为单个参数。因此该方法的价值值得商榷。

答案2

#!/usr/bin/env python
#!/usr/bin/python

第一个更便携。源1来源2来源3。我还没见过 Linux 无法正常工作的系统。这是一个普遍的说法 -/usr/bin/env通常可用,其他二进制文件则放在文件系统的任何地方。

相关内容