什么是Bash?什么是shell?

图:shell中的一种bash的变种dash

1.1什么是Bash?

Bash是GNU操作系统的shell程序或命令语言解释器,名称是“ Bourne-Again SHell”,是对当前Unix shell的直接作者斯蒂芬·伯恩(Stephen Bourne)的双关语sh(又称 Bourne SH,以下简称sh),sh出现在Unix 的第七版贝尔实验室研究版中。

Bash在很大程度上与sh兼容,与ksh(Korn shell)和csh(C shell)兼容并合并了有用的功能。它旨在成为IEEE POSIX 规范(IEEE标准1003.1)的IEEE POSIX外壳和工具部分的一致实现。它提供了交互式和编程使用方面的功能改进。

虽然GNU操作系统提供了其他shell,包括csh,但Bash是默认的shell。像其他GNU软件一样,Bash具有很好的可移植性。当前,它几乎可以在Unix的每个版本以及其他一些操作系统上运行-MS-DOS,OS / 2和Windows平台存在独立支持的端口。

1.2什么是shell?

从根本上说,shell只是执行命令的宏处理器。术语宏处理器是指将文本和符号扩展以创建更大的表达式的功能。

Unix shell既是命令解释器又是编程语言。作为命令解释器,shell为丰富的GNU实用程序集提供了用户界面。作为编程语言功能允许组合这些实用程序。包含命令的文件可以创建,也可以成为命令本身。这些新命令的状态与目录中的系统命令相同,例如/bin,允许用户或组建立自定义环境以自动化其常见任务。

shell可以交互使用或非交互使用。在交互模式下,它们接受键盘输入的输入。当以非交互方式执行时,shell执行从文件读取的命令。

Shell允许同步和异步执行GNU命令。在接受更多输入之前,shell等待同步命令完成。异步命令继续与外壳程序并行执行,同时读取和执行其他命令。所述重定向构建体允许这些命令的输入和输出的精细控制。而且,外壳程序允许控制命令环境的内容。

Shell还提供了一小组内置命令(内建命令),这些命令实现了通过单独的实用程序无法获得或不方便获得的功能。例如cdbreakcontinue,和 exec不能执行外壳的,因为它们直接操纵shell本身。historygetoptskill,或pwd 内建命令,除其他外,可以在单独的事业中实现,但它们作为内建命令使用起来更加方便。后续各节将介绍所有的shell内建函数。

尽管执行命令是必不可少的,但是大多数Shell的功能(和复杂性)都归功于它们的嵌入式编程语言。像任何高级语言一样,外壳程序提供变量,流控制构造,引用和函数。

Shell提供了专门为交互使用而设计的功能,而不是扩展编程语言。这些交互式功能包括作业控制,命令行编辑,命令历史记录和别名。

1.3注意点:

shell与shell脚本语言不要混淆。

作为外壳程序或命令语言解释器,shell为丰富的GNU实用程序集提供了用户界面。

作为编程语言,类似于php,java语言。

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/experience/linux/1060.html

发表评论

电子邮件地址不会被公开。 必填项已用*标注