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

Bash、sh 和 Shell都弄混了?

在Linux和Unix系统中,BashshShell 都与命令行解释器相关,但它们各自的含义和作用略有不同。以下是它们之间的关系和区别:

Shell

Shell 是一个通用术语,指的是操作系统中负责解释和执行用户命令的程序。它是用户与操作系统核心(Kernel)之间的接口。用户通过Shell来执行命令、启动程序、管理文件等。Shell可以是图形化的,也可以是文本模式的。在Linux和Unix系统中,Shell通常指的是一种命令行接口(CLI),用户通过输入命令来操作系统。

Shell有多种实现,常见的包括:

  • sh(Bourne Shell)
  • bash(Bourne Again Shell)
  • csh(C Shell)
  • ksh(Korn Shell)
  • zsh 等

sh(Bourne Shell)

sh 是早期Unix系统中的一种Shell,全称为 Bourne Shell,由贝尔实验室的Stephen Bourne在1979年开发。它是最早的标准Shell,也是许多Shell的基础。sh 提供了基本的Shell脚本功能,并成为了POSIX标准的一个基础,因此在许多Unix系统中,sh 常被认为是Shell脚本的通用标准。

sh 通常被用于编写脚本,尤其是希望在不同Unix系统上保持兼容性的脚本,因为它的功能简单而通用。

Bash(Bourne Again Shell)

BashBourne Again Shell 的缩写,它是 GNU 项目在Bourne Shell(sh)的基础上开发的改进版。Bash继承了sh的所有功能,并增加了许多增强功能,例如:

  • 命令历史记录:可以使用上下箭头键来翻阅之前输入的命令。
  • 命令补全:可以用Tab键自动补全命令和文件名。
  • 更强大的脚本功能:支持更多的数据结构和语法功能,如数组等。
  • 丰富的内建命令 和 更友好的错误提示

Bash 是目前Linux系统中默认的Shell,几乎所有的Linux发行版都预装了Bash。大多数Linux用户默认使用Bash作为命令行界面,因此Bash也是学习Shell编程的常见工具。

sh 和 Bash 的关系

  • 在很多系统中,/bin/sh 实际上是指向 /bin/bash 或其他兼容 sh 语法的Shell。因此在这种系统上,执行 sh 命令实际上是运行了 Bash 兼容模式,虽然它会禁用一些Bash特性以保持与标准 sh 的兼容性。
  • 兼容性:因为 sh 是POSIX标准Shell的基础,使用 sh 编写的脚本更具跨平台性。但Bash提供了更多的功能和语法,因此在编写复杂脚本时通常选择Bash。

总结一下~

  • Shell:一种命令行解释器,包含了各种类型(如 sh、bash、csh 等)。
  • sh(Bourne Shell):早期的标准Shell,功能简单,适合编写兼容性要求高的脚本。
  • Bash(Bourne Again Shell):sh的增强版,是Linux系统中的默认Shell,提供了更丰富的功能和命令。

在Linux中,用户通常使用的是 Bash,而 sh 通常用于保持与旧脚本和其他Unix系统的兼容性。

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

相关文章:

  • 架构师备考专栏-导航页
  • STM32-Cube定时器TIM
  • Webpack 是什么? 解决了什么问题? 核心流程是什么?
  • Jenkins面试整理-Jenkins 的主要用途是什么?
  • Linux下使用C/C++进行UDP网络编程
  • 【JavaEE初阶】网络原理—关于TCP协议值滑动窗口与流量控制,进来看看吧!!!
  • 无人机避障——使用三维PCD点云生成的2D栅格地图PGM做路径规划
  • supermall项目上拉加载bug分析
  • 【linux网络编程】| socket套接字 | 实现UDP协议聊天室
  • 第二届开放原子大赛-开源工业软件算法集成大赛即将启动!
  • PXC集群(Percona XtraDB Cluster )
  • 分布式光伏是什么意思?如何高效管理?
  • 提问GPT
  • 李飞飞团队新突破:低成本高泛化机器人训练法,零样本迁移成功率90%!
  • PHP内存马:不死马
  • 【python】OpenCV—Connected Components
  • 【优选算法篇】前缀之序,后缀之章:于数列深处邂逅算法的光与影
  • win10 更新npm 和 node
  • 搜索引擎算法更新对网站优化的影响与应对策略
  • 使用 Q3D 计算芯片引线的 AC 和 DC R 和 L
  • 前端_008_Vite
  • ssm007亚盛汽车配件销售业绩管理统(论文+源码)_kaic
  • 如何使用python完成时间序列的数据分析?
  • 数字ic设计,Windows/Linux系统,其他相关领域,软件安装包(matlab、vivado、modelsim。。。)
  • SD-WAN分布式组网:构建高效、灵活的企业网络架构
  • Task :prepareKotlinBuildScriptModel UP-TO-DATE,编译卡在这里不动或报错
  • unseping攻防世界
  • 大厂面试真题-简单描述一下SpringBoot的启动过程
  • 4. 硬件实现
  • 《操作系统真象还原》第3章 完善MBR【3.1 — 3.2】