Bash 是唯一允许执行可执行文件的 shell 脚本语言。
可执行文件必须以
#!/bin/bash
最少数量的标志开头。用于set
设置 shell 选项,以便调用脚本时bash script_name
不会破坏其功能。
set
具体来说,是关于使用以避免破坏功能的部分。以这种特定方式调用它与它有什么关系?
答案1
“最小数量的标志”是指在 hashbang 行中设置的标志。当脚本启动时./somescript
,它们会被读取,并且内核读取 hashbang 行,从那里找到的路径和选项构建一个新的参数列表。但这确实不是如果脚本启动为bash somescript
,因为要求内核运行bash
,而不是脚本本身,则会发生这种情况。 shell 本身将该行视为最终读取脚本时要忽略的注释。
例如,尝试以下脚本(在./hello
):
#!/bin/bash -x
echo hello
并以两种方式运行它:
$ ./hello
+ echo hello
hello
$ bash hello
hello
-x
仅在第一种情况下显示额外的跟踪输出,第二次调用时将忽略该标志。
使用set
命令显式启用该标志将使其以以下任一方式工作:
#!/bin/bash
set -x
echo hello
(但请注意,如果您尝试使用perl
,它做也解释 hashbang 行本身。)