Skip to Content
ShellShell 文件和解释器调用

Shell 文件和解释器调用

文件扩展名

可执行文件应使用 .sh 扩展名或不使用扩展名。

  • 如果可执行文件有一个构建规则(Build Rule)会重命名源文件, 则优先使用 .sh 扩展名。 这使你可以使用推荐的命名约定,即源文件为 foo.sh,构建规则命名为 foo
  • 如果可执行文件将直接添加到用户的 PATH 中,则优先不使用扩展名。 执行程序时不需要知道它是用什么语言编写的,而且 Shell 不要求扩展名, 因此我们倾向于对用户直接调用的可执行文件不使用扩展名。同时,请考虑部署 构建规则的输出而非直接部署源文件是否更好。
  • 如果以上两条都不适用,则两种选择都可以接受。

库(Library)必须使用 .sh 扩展名且不应具有可执行权限。

SUID/SGID

Shell 脚本禁止使用 SUID 和 SGID。

Shell 存在太多安全问题,几乎不可能将其保护到足以允许 SUID/SGID 的程度。虽然 Bash 确实使运行 SUID 变得困难,但在某些平台上仍然可行,因此我们在此明确禁止它。

如果你需要提升访问权限,请使用 sudo

Last updated on