Shell 的另一个重要功用是提供个人化的使用者环境 , 这通常在 shell 的初始化档案中完成(.profile、.login、.cshrc、.tcshrc 等等) 。这些档案包括了设定终端机键盘和定义窗口的特征;设定变量 , 定义搜寻路径、权限限、提示符号和终端机类形;以及设定特殊应用程序所需要的变量 , 例如窗口、文字处理程序、及程序语言的链接库 。Korn shell 和 C shell 加强了个别化的能力:增加历程、别名、和内建变量集以避免使用者误杀档案、不慎签出、并在当工作完成时通知使用者 。
Shell 也能当解译性的程序语言(interpreted programing language) 。Shell 程序 , 通常叫做命令文件 , 它由列在档案内的命令所构成 。此程序在编辑器中编辑(虽然也可以直接在命令列下写作程序, online scripting) , 由 UNIX 命令和基本的程序结构 , 例如变量的指定、测试条件、和循环所构成 。您不需要编译 shell 命令 。Shell 本身会解译命令档中的每一行 , 就如同由键盘输入一样 。shell 负责解译命令 , 而使用者则必须了解这些命令能做什么 。这本书的索引列出了一些有用的命令和它们的使用方法 。
Shell 的功用
为了确保任何提示符号下输入的命令都能够适当地执行 。shell 担任的工作包括有:
1. 读取输入和语法分析命令列
2. 对特殊字符求值
3. 设立管线、转向、和幕后处理
4. 处理讯号
5. 设立程序来执行
除了执行效率稍差外 , Korn shell 在许多方面都比 Bourne shell 为佳;但是 , 若将 Korn shell 与 C shell 相比就很困难 , 因为二者在许多方面都各有所长 , 就效率和容易使用上看 , Korn shell 是优于 C shell , 相信许多使用者对于 C Shell 的执行效率都有负面的印象 。
在shell 的语法方面 , Korn shell 是比较接近一般程序语言 , 而且它具有子程序的功能及提供较多的资料型态 。至于 Bourne shell , 它所拥有的资料型态是三种 shell 中最少的 , 仅提供字符串变量和布尔型态 。在整体考量下 Korn shell 是三者中表现最佳者 , 其次为 C shell , 最后才是 Bourne shell , 但是在实际使用中仍有其它应列入考虑的因素 , 如速度是最重要的选择时 , 很可能应该采用 Bourne shell , 因它是最基本的 shell , 执行的速度最快 。
tcsh 是近几年崛起的一个免费软件(Linux 下的C shell 其实就是使用 tcsh)执行 , 它虽然不是UNIX 的标准配备 , 但是从许多地方您都可以下载到它 。如果您是 C shell 的拥护者 , 笔者建议不妨试试 tcsh , 因为您至少可以将它当作是 C shell 来使用 。如果您愿意花点时间学习 , 您还可以享受许多它新增的优越功能 , 例如:
1. tcsh 提供了一个命令列(command line)编辑程序 。
2. 提供了命令列补全功能 。
3. 提供了拼字更正功能 。它能够自动检测并且更正在命令列拼错的命令或是单字 。
4. 危险命令侦测并提醒的功能 , 避免您一个不小心执行了rm* 这种杀伤力极大的命令 。
5. 提供常用命令的快捷方式(shortcut) 。
bash 对 Bourne shell 是向下兼容(backward compatible) , 并融入许多C shell 与Korn shell 的功能 。这些功能其实 C shell(当然也包括了tcsh)都有 , 只是过去 Bourne shell 都未支持 。以下笔者将介绍 bash 六点重要的改进(详细的使用说明笔者会在以后的章节介绍):
1. 工作控制(job contorl) 。bash 支持了关于工作的讯号与指令 , 本章稍后会提及 。
2. 别名功能(aliases) 。alias 命令是用来为一个命令建立另一个名称 , 它的运作就像一个宏 , 展开成为它所代表的命令 。别名并不会替代掉命令的名称 , 它只是赋予那个命令另一个名字 。
推荐阅读
- Web开发员是否需要获得Linux认证?
- Linux职业认证考试102的必考点
- CSIP对其在国家Linux水平认证战略伙伴的采访
- Linux线程比较:LinuxThreads 和NPTL
- 国家Linux技术水平认证项目正式启动
- D89之简介
- Linux命令:改变文件或目录的访问权限
- 红帽Linux获美国政府最高安全等级认证
- Linux终端下的强大工具screen的认识
- Linux 认证,我们到底该去考不考?
