#!/ usr / bin / python3的用途

我已经注意到这在一些脚本语言,但在这个例子中,我使用Python。 在许多教程中,他们将从第一行的#!/usr/bin/python3开始。 我不明白为什么我们有这个。

  • 操作系统不应该知道它是一个python脚本(显然是因为你正在引用它而被安装)
  • 如果用户正在使用不是基于Unix的操作系统,该怎么办?
  • 无论出于何种原因,该语言都安装在不同的文件夹中
  • 用户有不同的版本。 特别是当它不是一个完整的版本号(如Python3与Python32)

如果有的话,我可以看到这打破了Python脚本,因为上面列出的原因。

#!/usr/bin/python3是一个shebang行

shebang行定义了解释器的位置。 在这种情况下, python3解释器位于/usr/bin/python3 。 它可以是bashrubyperl或任何其他脚本语言的解释器。 如果您在脚本上设置了执行标志,并且像./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一样)。

  1. 而这条线是如何

  2. 它被忽略。

  3. 它将无法运行,应改为指向正确的位置。 或者应该使用env

  4. 它将无法运行,并可能无法在不同的版本下运行。