bash与csh, tcsh, sh的差异解析
PDF格式 | 76KB |
更新于2024-08-29
| 22 浏览量 | 举报
"这篇文章主要探讨了csh, tcsh, bash以及sh这四种Shell之间的区别,特别是bash与sh,Bourne shell之间的差异。"
在Unix和类Unix系统中,Shell是用户与操作系统交互的重要工具,它们各自拥有独特的特性和用途。csh和tcsh(C Shell的增强版本)以其命令历史和别名功能而著名,更适合交互式使用。而bash(Bourne-Again SHell)和sh(Bourne Shell)则更多地用于脚本编写,尤其是bash,它是GNU/Linux系统的默认Shell。
bash与sh的主要区别在于bash引入了许多增强功能和兼容性改进。以下是一些显著的差异:
1. **长选项的调用**:bash支持长选项,如`--help`,而sh仅支持短选项,如`-h`。
2. **`-O`和`-l`选项**:bash允许通过`-O`选项启用或禁用特定的shell选项,`-l`则让bash模拟登录Shell的行为。
3. **`!`保留字**:在bash中,`!`可以用来反转管道命令的退出状态码,例如`if ! command; then`会检查command是否失败。
4. **`time`保留字**:bash中的`time`关键字可以用于测量命令或管道的执行时间。
5. **`function`保留字**:bash支持`function`关键字定义函数,使得函数定义更加直观。
6. **`select`复合命令**:bash提供了`select`命令,用于创建菜单式的交互输入。
7. **算术命令**:bash的`for`循环可以执行算术表达式,如`for ((expr1; expr2; expr3)); do list; done`。
8. **引用方式的扩展**:bash引入了`$'...'`和`$"..."`两种新的引用方式,分别用于转义特殊字符和字符串处理。
9. **命令替换的形式**:bash使用`$(...)`进行命令替换,比sh的`backticks`更易读且支持嵌套。
10. **文件描述符重定向**:bash允许使用`$(<filename)`来代替`$(cat filename)`,直接从文件读取内容,提高效率。
11. **参数值长度**:bash可以通过`${#param}`获取参数变量的长度,这是sh不具备的功能。
这些差异使得bash在脚本编写上具有更强的灵活性和可读性,同时也保持了与sh的基本兼容性。然而,对于那些需要严格遵守POSIX标准或需要跨平台兼容性的脚本,sh仍然是首选。了解这些Shell之间的差异有助于开发者选择最适合他们需求的工具。
相关推荐
166 浏览量
weixin_38611508
- 粉丝: 1
- 资源: 884
最新资源
- j2me的eclipse配置
- JavaMail开发手册.pdf
- Pro LINQ Language Integrated Query in C# 2008
- java编码规约文档 写java程序必备的东东
- LoadRunner压力测试实例
- IEC62056-53中文版COSEM应用层
- Makefile使用手册.pdf
- java学习笔记--开发必备
- AIR Applications with HTML and Ajax
- Flex元数据标签详细简介
- 嵌入式linux入门笔记.
- Java 6 Platform Revealed
- MQ reason code
- symbian编码标准
- c# program
- 02界面编程-1(菜单).doc