什么是线
#!/usr/bin/env python
在用于的python脚本的第一行?
在 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
这称为shebang线:
在计算中,shebang(也称为 hashbang、hashpling 或 pound bang)指的是字符“#!” 当它们是文本文件中的前两个字符时。类 Unix 操作系统将这两个字符的存在作为文件是脚本的指示,并尝试使用文件中第一行其余部分指定的解释器执行该脚本。例如,Bourne shell 的 shell 脚本从第一行开始:
在 UNIX 和类似的操作系统下,这一行告诉如果执行文件将使用哪个解释器。
正如安德里所说。在 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 解释器通过打开文件并查看文件中是否有指定的命令来进行推断。
'/usr/bin/env python' 在 $PATH 中搜索 python 并运行它。
通常env用于为程序设置一些环境变量
该行的作用是告诉您的计算机如何处理该文件,如果您只是尝试运行该文件而不指定解释器..更多详细信息
请注意,这一行只不过是对Windows中解释器的注释。