shell和bash之间的关系
1. shell是什么?
- shell 是一个命令语言解释器(command-language interpreter)。拥有自己内建的 shell 命令集。
- shell的另一个重要特性是它自身就是一个解释型的程序设计语言,shell 程序设计语言支持在高级语言里所能见到的绝大多数程序控制结构,比如循环,函数,变量和数组。shell 编程语言很易学,并且一旦掌握后它将成为你的得力工具。
2. bash是什么
-
在Linux 和 UNIX系统里可以使用多种不同的shell可以使用。最常用的几种是 Bourne shell (sh), C shell (csh), 和 Korn shell (ksh).种shell 都有它们的优点和缺点。Bourne shell 的作者是 Steven Bourne。它是 UNIX 最初使用的shell 并且在每种 UNIX 上都可以使用。Bourne shell 在 shell 编程方面相当优秀,但在处理与用户的交互方面作得不如其他几种 shell。
-
我们一般使用的shell就是Bourne shell (sh),但是事实上,我们 Bourne Again shell (bash), 正如它的名字所暗示的,是 Bourne shell 的扩展。bash 与 Bourne shell 完全向后兼容,并且在 Bourne shell 的基础上增加和增强了很多特性。bash 也包含了很多 C 和 Korn shell 里的优点。bash 有很灵活和强大的编程接口,同时又有很友好的用户界面。
-
为什么要用 bash 来代替 sh 呢?
Bourne shell 最大的缺点在于它处理用户的输入方面。在 Bourne shell 里键入命令会很麻烦,尤其当你键入很多相似的命令时。而 bash 准备了几种特性使命令的输入变得更容易。 命令补齐(Command-Line Completion) 通常你在 bash (或任何其他的 shell)下输入命令时你不必把命令输全 shell 就能判断出你所要输入的命令。例如,假定当前的工作目录包含以下的文件和子目录: News/ bin/ games/ mail/ samplefile test/ 如果你要进入 test 子目录,你将会输入以下的命令: cd test 这个命令能够满足你的需要,但 bash还提供了稍微不同的方法来完成同样的事。因为 test 是当前目录里唯一以字母 t开头的子目录,bash在你只输入字母 t后就能判断出你要做什么了: cd t 在你键入那个字母后,唯一的可能就是 test 。想让 bash 帮你结束命令的话,按下 Tab 键
ps: 所以,平时我们在写shell的时候,一般都会在头部加上一个这个
#!/bin/bash
其实这就是在告诉shell解释器,这个程序需要使用bash来解释,我写的是bash这种shell
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名,转载请标明出处
最后编辑时间为:
2020/08/03 14:39