您的位置:首页 > 运维架构 > Shell

gnu-bash#1 介绍

2015-08-21 22:50 309 查看
想试着翻译一些手册,就从bash开始吧。官方链接在这里

1.1 什么是bash

Bash是一种shell,或者说是一种针对GNU操作系统的命令解释器。名字本身是Bourne-Again SHell的首字母缩写,是对Bourne Shell的双关。Bourne Shell是当前Unix上shell的原型。Bourne Shell最早出现在贝尔实验室Unix的第七版。

Bash高度兼容sh,并从ksh和csh中吸纳很多有用的特性。bash试图对IEEE POSIX Shell and Tools portion of the IEEE POSIX specification (IEEE Standard 1003.1) 标准作一个较好的实现。相比sh, 在交互性和编程特性上,bash做了很多功能上的改进。

尽管GNU OS也提供其他的shell,包括csh,但bash是默认的shell,和其他的GNU软件一样,bash有很好的可移植性。它几乎在所有的Unix系统以及其他一些操作系统上运行,包括 MS-DOS, OS/2, and Windows 平台.

1.2 什么shell

从根本上来说,shell可以简单认为是一个执行命令的宏处理器。macro这个术语本身已经体现了它的功能,把文本和符号扩展为更复杂的表达式。

shell既是一个命令解释器,也是一种编程语言。作为一个命令解释器,shell提供用户接口以便使用强大的GNU应用程序集。而作为编程语言,而它的语言特性允许这些程序得以组合。包含命令的文件可以被创建,而这些文件本身也可以成为命令。这些新的命令,和在类似/bin目录下的系统命令一样,允许用户和群组建立定制环境,来自动化完成他们的日常工作。

shell可以工作在交互模式和非交互模式下。在交互模式系下,shell接受键盘输入,在非交互模式下,shell执行从文件中读取的命令。

shell 允许GNU命令的执行,可以同步执也可以非同步执行。shell在接受新的输入前,必须等待同步命令执行完成。而异步命令将和shell自身并行执行。重定向指令允许我们对这些命令的输入输出进行细粒度的控制。而且shell还允许对命令的执行环境进行控制。

shell还提供一个较小的内建命令集合(builtins)。以完成一些不可能或者不方便通过独立组件完成的功能。比如cd,break,continue自己exec就不能再shell程序之外执行,因为他们直接对shell自身进行操作。而History,getopts,kill, pwd 这些内建命令是可以通过独立的程序来完成的,但是他们以内建命令使用起来会更方便。所有这些内建命令都会在后续的分节中描述。

执行命令是不可避免的,shell之所以强大或者说复杂,主要是由于它嵌入的编程语言。和所有的高级语言一样,shell提供变量,控制流,引用,以及函数。

shell也提供很多针对交互设计的功能,而不只是加强语言特性。这些交互特性包括job控制,命令行编辑,命令历史查看,以及别名机制。这些特性会在该手册中描述。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: