我已经看到许多文件将这一行作为其中的第一行。这究竟是什么?
#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)
这是什么意思?为什么有必要?
这不仅仅是/usr/bin/env python但是#!/usr/bin/env python,这条线被称为shebang。
我引用维基百科:
在类 Unix 操作系统下,当带有 shebang 的脚本作为程序运行时,程序加载器将脚本初始行的其余部分解析为解释器指令;而是运行指定的解释器程序,将尝试运行脚本时最初使用的路径作为参数传递给它。 [8] 例如,如果脚本以路径“path/to/script”命名,并且它以以下行开头:
Run Code Online (Sandbox Code Playgroud)#!/bin/sh然后指示程序加载器运行程序“/bin/sh”(通常这是 Bourne shell 或兼容的 shell),将“path/to/script”作为第一个参数传递。
shebang 行通常被解释器忽略,因为“#”字符在许多脚本语言中是一个注释标记;一些不使用哈希标记开始注释的语言解释器(例如 Scheme)仍然可能会忽略 shebang 行以识别其目的。
在我的情况下(13.10 桌面),/usr/bin/env python将默认为 python2.7,但它可能是 python3.4,具体取决于您的系统默认值(例如 14.04 服务器)。
$ /usr/bin/env python
Python 2.7.5+ (default, Feb 27 2014, 19:37:08)
[GCC 4.8.1] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>
Run Code Online (Sandbox Code Playgroud)