Google 的 Shell 样式指南中建议使用“set”设置 shell 选项是什么意思?

Google 的 Shell 样式指南中建议使用“set”设置 shell 选项是什么意思?

来自 Google 的 Shell 风格指南:

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 行本身。)

相关内容