当前位置: 首页 > news >正文

#!/bin/sh和#!/bin/bash的区别

前言:都是脚本文件中的 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 或其兼容版本。

http://www.lryc.cn/news/330728.html

相关文章:

  • 腾讯云(CVM)托管进行权限维持
  • STM32-03基于HAL库(CubeMX+MDK+Proteus)输入检测案例(按键控制LED)
  • DS3231SN
  • tsconfig.json文件翻译
  • 树状数组学习笔记
  • 【bugfix】如何解决svg到线上显示空白或者svg的viewBox为空
  • docker基础学习指令
  • 回溯大学生活
  • Android Fence机制
  • sa-token非Web上下文无法获取Request
  • tomcat 常见优化方案
  • 前端导出文本内容为csv文件,excel乱码
  • 36---USB HUB电路设计
  • FPGA在深度学习领域的应用的优势
  • Windows Edge 兼容性问题修复 基本解决方案
  • 【Servlet】服务器内部转发以及客户端重定向
  • 是否有替代U盘,可安全交换的医院文件摆渡方案?
  • Java设计模式详解:单例模式
  • Pointnet++改进即插即用系列:全网首发OREPA在线重新参数化卷积,替代普通卷积 |即插即用,提升特征提取模块性能
  • XRDP登录ubuntu桌面闪退问题
  • 【Node】使用Node.js构建简单的静态页面生成器
  • AI智能客服机器人是什么?对企业重要吗?
  • InfluxDB2的数据查询示例
  • CSS基础语法-黑马跟课笔记-供记录与查询
  • 「PHP系列」PHP数组排序及运用场景
  • VScode debug python(服务器)
  • 5.11 Vue配置Element UI框架
  • DolphinScheduler on k8s 云原生部署实践
  • JVM将虚拟机分成了哪几块区域?
  • 【热门话题】WebKit架构简介