11

什么是线

#!/usr/bin/env python

在用于的python脚本的第一行?

4

6 回答 6

26

在 UNIX 和 Linux 中,这告诉使用哪个二进制文件作为解释器(另见Wiki 页面)。例如,shell 脚本由/bin/sh.

#!/bin/sh

现在使用 python 有点棘手,因为你不能假设二进制文件安装在哪里,也不能假设你想使用哪个。因此/usr/bin/env诀窍。它使用$PATH. 您可以检查执行which python

使用解释器行,您可以通过将脚本 chmod 为可执行文件来运行脚本。只是运行它。因此以脚本开头

#!/usr/bin/env python

这两种方法是等价的:

$ python script.py

和(假设你之前已经完成了chmod +x script.py

$ ./script.py

这对于创建系统范围的脚本很有用。

cp yourCmd.py /usr/local/bin/yourCmd
chmod a+rx /usr/local/bin/yourCmd

然后你可以从任何地方调用它

yourCmd
于 2009-04-01T20:14:20.103 回答
14

这称为shebang线:

在计算中,shebang(也称为 hashbang、hashpling 或 pound bang)指的是字符“#!” 当它们是文本文件中的前两个字符时。类 Unix 操作系统将这两个字符的存在作为文件是脚本的指示,并尝试使用文件中第一行其余部分指定的解释器执行该脚本。例如,Bourne shell 的 shell 脚本从第一行开始:

于 2009-04-01T20:10:09.240 回答
5

在 UNIX 和类似的操作系统下,这一行告诉如果执行文件将使用哪个解释器。

于 2009-04-01T20:08:35.593 回答
5

正如安德里所说。在 Windows 中,从命令行启动时运行文件的可执行文件依赖于关联:

16:12:40.68 C:\>assoc .py
.py=Python.File

16:13:53.45 C:\>assoc Python.File
Python.File=Python File

16:14:01.70 C:\>ftype Python.File
Python.File="C:\Python30\python.exe" "%1" %*

在 Unix 中,shell 解释器通过打开文件并查看文件中是否有指定的命令来进行推断。

于 2009-04-01T20:15:29.320 回答
3

'/usr/bin/env python' 在 $PATH 中搜索 python 并运行它。

通常env用于为程序设置一些环境变量

该行的作用是告诉您的计算机如何处理该文件,如果您只是尝试运行该文件而不指定解释器..更多详细信息

于 2009-04-01T20:10:20.750 回答
2

请注意,这一行只不过是对Windows中解释器的注释。

于 2009-04-01T20:52:34.440 回答