什么是 shebang(#!/bin/bash)。

什么是 shebang(#!/bin/bash)。

为什么我们在 shell 脚本文件的开头使用 shebang。没有它脚本还能运行吗?

我尝试在 shell 脚本中不使用 shebang 来运行它,但是它没有运行。

答案1

当文件script舍邦指示

#!langpath args

并设置了执行权限,Unix 将“替换它”为

exec langpath args path-to-the-script.

这种方式通常:

  • langpath定义要使用的语言,应该是(编程)语言的可执行解释器的路径(例如:'/usr/bin/python')
  • 该语言应该接受脚本文件作为参数
  • 语言应该忽略该#!...指令作为注释

答案2

不同的 shell 支持不同的功能。为了提供有效的建议,ShellCheck 需要知道您的脚本将在哪个 shell 上运行。根据目标 shell,您将收到不同数量的警告。

ShellCheck 通常根据 shebang 确定目标 shell(#!/bin/sh例如第一行)。也可以使用 CLI 指定 shell -s,例如shellcheck -s sh file

如果您未指定shebang 或-s,ShellCheck 会显示此消息并使用一些默认值(bash)继续。

请注意,此错误不能通过指令忽略。这不是改进脚本的建议,而是警告 ShellCheck 缺少有用的信息。

相关内容