python - #!/usr/bin/python3 shebang 的目的

标签 python scripting

我在几种脚本语言中都注意到了这一点,但在这个例子中,我使用的是 python。在许多教程中,它们会在第一行以 #!/usr/bin/python3 开头。我不明白为什么我们有这个。

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

如果有的话,由于上面列出的原因,我可以看到这会破坏 python 脚本。

最佳答案

#!/usr/bin/python3shebang line .

shebang 行定义解释器所在的位置。在这种情况下,python3口译员位于 /usr/bin/python3 . shebang 线也可以是 bash , ruby , perl或任何其他脚本语言的解释器,例如:#!/bin/bash .

没有shebang行,操作系统不知道它是python脚本,即使你在脚本上设置执行标志(chmod +x script.py)并像./script.py一样运行它.要使脚本在 python3 中默认运行,可以将其调用为 python3 script.py或者设置shebang线。

您可以使用 #!/usr/bin/env python3以在不同系统安装语言解释器的情况下实现跨不同系统的可移植性。

关于python - #!/usr/bin/python3 shebang 的目的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7670303/

相关文章:

pythonnet dll 目录访问被拒绝

python - Cython 中的水稻编码

python - 为什么 Python 数据类型在 Python 提示符中表现得像这样?

shell - 仅当目录尚不存在时如何 mkdir ?

linux - 从 shell 脚本调用 erlang 文件的函数

.net - 'TestString' 未声明。由于其保护级别,它可能无法访问。 (BC30451)

java - 什么基于 JVM 的脚本语言支持@WebService 在运行时创建服务?

python - 当步幅大于 1 时,SAME 填充如何在卷积神经网络中工作?

python - 没有 'for' 的列表理解

matlab - 如何在 MATLAB 中注释图表?