前言:都是脚本文件中的 shebang(也称为 hashbang)行,用于指定脚本文件的解释器
解释:
-
#!/bin/sh
:这行告诉操作系统使用/bin/sh
这个解释器来执行脚本。/bin/sh
是一个标准的 Unix Shell,通常是 Bourne Shell 或其兼容版本,比如 Bash 的兼容模式。在某些系统中,/bin/sh
可能会链接到其他 Shell 解释器,比如 Dash。因此,使用#!/bin/sh
时,脚本将由系统默认的 Shell 来执行,可能是 Bourne Shell 的实现,也可能是其他兼容的 Shell。 -
#!/bin/bash
:这行告诉操作系统使用/bin/bash
这个解释器来执行脚本。/bin/bash
是 Bash Shell 的路径,Bash 是 Bourne Again Shell 的缩写,是 Bourne Shell 的增强版本,向后兼容 Bourne Shell,并添加了许多新特性和功能。
区别:
- 如果使用
#!/bin/bash
,脚本将始终由 Bash 解释器执行。 - 如果使用
#!/bin/sh
,脚本将由系统上默认的 Shell 解释器执行,可能是 Bourne Shell、Bash 或其他兼容的 Shell。
选用哪个:
一般来说,如果脚本中使用了 Bash 特有的功能或语法,应该使用 #!/bin/bash
来确保脚本能够在 Bash 中正确执行。如果脚本中仅使用了标准的 Shell 功能,使用 #!/bin/sh
是更加通用的做法,因为在大多数系统中都会有默认的 Bourne Shell 或其兼容版本。