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