pojin (ID: 1)
头衔:论坛坛主
等级:究级天王[荣誉]
积分:2859
发帖:232 篇
来自:保密
注册:2023-12-09 09:36:49
造访:2026-07-06 13:05:50
发帖:232 篇
来自:保密
注册:2023-12-09 09:36:49
造访:2026-07-06 13:05:50
[ 第 1 楼 ]
171
回复
在计算机科学中,shebang行是由“#”号、“!”号、可执行文件路径组成的字符串行,一般作为文本文件的第一行出现,表示执行该脚本文件的默认解释器。shebang行通常在以下场景中使用:
指定脚本在特定的虚拟环境中运行,比如虚拟环境中安装的jupyter,在虚拟环境的bin目录下,众多jupyter可执行文件都设置了shebang行,限定jupyter只在该虚拟环境中使用。
在main脚本中指定默认解释器,比如#!/usr/bin/python3。
使用shebang行时,也要注意以下几点:
脚本导入时,shebang行不起作用,仅运行时才起作用。
在命令行环境下执行脚本时,若执行脚本时指定了解释器,并且指定的解释器与shebang行配置不一致,命令行指定优先级要高于shebang行的指定。
“#!”后面的空格是可选的。
在Unix中,shebang其实就是指“#!”,它取自#(SHArp)和!(bang)。它是很多脚本文件中第一行的前两个字符,用来告诉Unix系统要用shebang后面指定的解释器来解释该脚本。所以,在很多脚本中,第一行往往都是这么写的:#! /abs/path/to/interpreter。
Shebang行不是必需的,但是建议加上这行。如果缺少该行,就需要手动将脚本传给解释器。举例来说,脚本是script.sh,有 Shebang 行的时候,可以直接调用执行。如果没有 Shebang 行,就只能手动将脚本传给解释器来执行。
在不同的操作系统上,shebang行的设置可能会有所不同。例如,在 Windows 上,shebang 行是 #!python3;在 OS X 上,shebang 行是 #!/usr/bin/env python3;在 Linux 上,shebang 行是 #!/usr/bin/python3。
指定脚本在特定的虚拟环境中运行,比如虚拟环境中安装的jupyter,在虚拟环境的bin目录下,众多jupyter可执行文件都设置了shebang行,限定jupyter只在该虚拟环境中使用。
在main脚本中指定默认解释器,比如#!/usr/bin/python3。
使用shebang行时,也要注意以下几点:
脚本导入时,shebang行不起作用,仅运行时才起作用。
在命令行环境下执行脚本时,若执行脚本时指定了解释器,并且指定的解释器与shebang行配置不一致,命令行指定优先级要高于shebang行的指定。
“#!”后面的空格是可选的。
在Unix中,shebang其实就是指“#!”,它取自#(SHArp)和!(bang)。它是很多脚本文件中第一行的前两个字符,用来告诉Unix系统要用shebang后面指定的解释器来解释该脚本。所以,在很多脚本中,第一行往往都是这么写的:#! /abs/path/to/interpreter。
Shebang行不是必需的,但是建议加上这行。如果缺少该行,就需要手动将脚本传给解释器。举例来说,脚本是script.sh,有 Shebang 行的时候,可以直接调用执行。如果没有 Shebang 行,就只能手动将脚本传给解释器来执行。
在不同的操作系统上,shebang行的设置可能会有所不同。例如,在 Windows 上,shebang 行是 #!python3;在 OS X 上,shebang 行是 #!/usr/bin/env python3;在 Linux 上,shebang 行是 #!/usr/bin/python3。
