What's the difference between these two python shebangs
我以前用过shebang
什么时候用比较好
它们之间的确切区别是什么?
- 你有没有试过用man env来查看env应用程序的功能?
- 可能是人们为什么要写的副本!/在python脚本的第一行使用usr/bin/env python?
- @s.lott我假设env是一个目录,而不是一个可执行文件。
- 可能是我应该放的副本!(shebang)在python脚本中,应该采用什么形式?
#!/usr/bin/python被硬编码为始终运行/usr/bin/python,而#!/usr/bin/env python将运行当前环境中默认的python(它将考虑例如$PATH,您可以检查哪些python解释器将与which python一起使用)。
第二种方式(#!/usr/bin/env python)是首选的,因为它不依赖于特定的安装。例如,它将与没有/usr/bin/python但仅限于/usr/local/bin/python的virtualenv设置或系统一起工作。
- 这个。看看人们为什么要写!/在python脚本的第一行使用usr/bin/env python?以及python邮件列表上的这条消息。
- 通过env进行的间接寻址在/usr/bin/python存在时也可以工作,但不是实际的可执行文件(例如,它可能是一个启动脚本)
- 这是否意味着使用#!/usr/bin/env perl比通常的shebang #!/bin/perl更通用?在我看来,人们通常在Perl中使用#!/bin/perl,而在Python中使用#!/usr/bin/env python。为什么?
- @肯,没有原则性的原因,只是历史的意外。
- @Ken:Afaik,没有流行的Perl的virtualenv等价物。