📜  sh vs bash (1)

📅  最后修改于: 2023-12-03 14:47:25.876000             🧑  作者: Mango

介绍:sh vs bash

概述

Shell 是一种解释器,用来解释执行命令行中的语句。在 Linux 系统中,常见的 Shell 有 bash,sh,ksh,csh 等。每个 Shell 有各自的特点和用途,其中 sh 和 bash 是比较常用的两种。

sh

sh(Bourne Shell) 是最初的 Unix Shell,由 Steven Bourne 编写。它是 Unix 系统预装的第一个 Shell,在大多数 Linux 系统中,/bin/sh 都是指向 /bin/bash 的链接。

sh 的老旧历史和预装特性使得它成为了一个通用的工具,它不需要任何特别或者另外的安装,因此它的脚本很容易被系统和应用接受和调用。

然而,sh 的设计和语音规则比较原始,只提供了基本的变量定义、条件判断、以及简单的 while 和 for 循环等语句。这意味着在处理复杂的任务时,sh 的编码会比较费劲。同时,sh 缺乏高级的特性如命令行编辑器和 tab 补全等。

bash

bash(Bourne-Again SHell) 是目前最常见的 Shell,是由 Brian Fox 和 Chet Ramey 开发的。可以说是 sh 的升级版,将复杂任务中的大多数繁重操作自动化,同时加入了新特性如命令行编辑器、命令历史、自动补全等,使得编写和维护脚本变得更加容易。

由于 bash 兼容 sh 的所有功能和脚本,因此在使用自己编写的脚本时,多数情况下,我们选择将脚本以 /bin/sh 或者 /usr/bin/sh 来执行。同时,bash 提供了更多的编程特性,如数组、函数、文件描述符等等,这使得 bash 被视为一个更加专业的 Shell。

结论

在选择 sh 和 bash 时,我们需要根据需要存档代码的目的来决定使用哪种 Shell。如果只是需要简单的脚本执行,我们可以使用 sh。如果需要在已有脚本的基础上完成更多的任务并且需要更好的互动性,则选择 bash。但是,我们需要注意的是,使用 bash 的同时,有时会发现可移植性受到了损害,这时候,我们需要使用 sh。

总体来说,bash 是更加普遍使用的 Shell,特别是在 Linux 和 Unix 系统中;而 sh 是比较古老和原始的 Shell,适合在一些特别需要轻量和快速的场景下使用。

参考文献