#!/ usr / bin / python3的用途
我已经注意到这在一些脚本语言,但在这个例子中,我使用Python。 在许多教程中,他们将从第一行的#!/usr/bin/python3
开始。 我不明白为什么我们有这个。
- 操作系统不应该知道它是一个python脚本(显然是因为你正在引用它而被安装)
- 如果用户正在使用不是基于Unix的操作系统,该怎么办?
- 无论出于何种原因,该语言都安装在不同的文件夹中
- 用户有不同的版本。 特别是当它不是一个完整的版本号(如Python3与Python32)
如果有的话,我可以看到这打破了Python脚本,因为上面列出的原因。
#!/usr/bin/python3
是一个shebang行 。
shebang行定义了解释器的位置。 在这种情况下, python3
解释器位于/usr/bin/python3
。 它可以是bash
, ruby
, perl
或任何其他脚本语言的解释器。 如果您在脚本上设置了执行标志,并且像./script.py
那样运行,操作系统就不知道它是一个python脚本,除非像python3 script.py
那样运行它,或者设置shebang行。
如果在不同的位置安装了语言解释器,则可以使用/usr/bin/env python3
在不同系统间移植。
这就是所谓的哈希。 如果你从shell运行脚本,它将检查第一行,找出应该开始解释脚本的程序。
非Unix的操作系统将使用自己的规则来计算如何运行脚本。 例如,Windows将使用文件扩展名, #
将使第一行被视为注释。
如果Python可执行文件的path错误,那么脚本自然会失败。 从标准约定规定的任何位置创build到实际可执行文件的链接是很容易的。
这一行有助于find将运行脚本的程序可执行文件。 在大多数脚本语言中,这个表示符号是相当标准的(至less在成年操作系统上是这样使用的)。
这一行的一个重要方面是指定将使用哪个解释器。 例如,在许多以开发为中心的Linux发行版中,同时安装多个版本的python是很正常的。
Python 2.x和Python 3不是100%兼容的,所以这种差异可能是非常重要的。 所以#! /usr/bin/python
#! /usr/bin/python
和#! /usr/bin/python3
#! /usr/bin/python3
是不一样的(和本文其他地方提到的#! /usr/bin/env python3
一样)。
-
而这条线是如何 。
-
它被忽略。
-
它将无法运行,应改为指向正确的位置。 或者应该使用
env
。 -
它将无法运行,并可能无法在不同的版本下运行。