原文:What is a Shell?
注意:本文是对原文的一个翻译!
Shell
是一个宏处理器,用于执行命令。宏处理器意味着,将文本和符号展开,创建一个更大的表达式。
Unix shell
既是一个命令解释器,也是一门编程语言。作为一个命令解释器
,它提供了丰富的GUN工具集
可以与用户进行交互。作为编程语言,它可以组合使用这些工具。创建的文件能包含命令,而这个文件同时也将成为一个命令──这是个新的命令,有着与/bin
中的命令一样的状态。用户组合命令,建立自动化命令的环境。
Shell
可以交互的使用,也可以以非交互的方式使用。交互状态,从键盘获取输入;非交互状态,从文件中执行命令。
Shell
能以同步(synchronously
)或异步(asynchronously
)的方式执行命令。重定向构造,可以控制输入和输出命令的粒度(fine-grained
)。shell
也允许控制命令环境的内容。
Shell
提供了一些内建的命令,用于实现工具所不能或不方便实现的功能。这些命令有:
- cd
- break
- continue
- exec
- exec 不能在外部实现,因为它会直接操作
shell
本身。
- exec 不能在外部实现,因为它会直接操作
- history
- getopts
- kill
- pwd
有一些命令可以以工具的方式实现,但实现在中shell
更为便。
执行命令只是基本,与大多数的编程语言一样,shell
也提供了变量(variables),流控制结构(flow control constructs),引用(quoting)与函数(function)。
Shell
提供了专门用于交互使用的功能,有:
- 作业控制(job control)
- 命令行编辑(command line editing)
- 命令历史(command history)
- 别名(aliases)