【问题标题】:What's the difference between python shebangs with /usr/bin/env rather than hard-path?python shebangs 与 /usr/bin/env 而不是硬路径有什么区别?
【发布时间】:2011-08-08 06:04:09
【问题描述】:

我曾经用过shebang

#!/usr/bin/env python

什么时候用比较好

#!/usr/bin/python

它们之间的确切区别是什么?

【问题讨论】:

标签: python path environment shebang


【解决方案1】:

#!/usr/bin/python 被硬编码为始终运行/usr/bin/python,而#!/usr/bin/env python 将运行您当前环境中默认的python(它将考虑例如$PATH,您可以检查哪个python 解释器将与which python 一起使用)。

第二种方式(#!/usr/bin/env python)是首选,因为它不依赖于特定的安装。例如,它适用于virtualenv 设置或没有/usr/bin/python 的系统,但只有例如/usr/local/bin/python.

【讨论】:

  • /usr/bin/python 存在但不是实际可执行文件(例如,它可能是启动脚本)时,通过env 的间接作用也有效
  • 这是否意味着使用#!/usr/bin/env perl 会比通常的shebang #!/bin/perl 更通用?在我看来,人们通常在 perl 中使用#!/bin/perl,但在 python 中使用#!/usr/bin/env python。为什么?
  • @Ken,没有原则性的理由,只是历史的偶然。
  • @Ken: AFAIK,Perl 没有流行的 virtualenv 等价物。
猜你喜欢
  • 2011-07-29
  • 2011-11-28
  • 1970-01-01
  • 1970-01-01
  • 2014-02-21
  • 2015-02-01
  • 2018-01-15
  • 2013-04-22
相关资源
最近更新 更多