这本书主要描述的是, 在GNU/Linux系统上, 如何处理特定于Bash的脚本. 但是使用sh和ksh的用户仍然会从这里找到很多有价值的东西. .
碰巧, 许多不同的shell脚本语言其实都遵循POSIX 1003.2标准.
如果使用--posix
选项来调用Bash,
或者在脚本头插入set -o posix,
那么将会使Bash与这个标准非常接近地保持一致.
另一种办法就是在脚本头使用
1 #!/bin/sh |
1 #!/bin/bash |
大多数的Bash脚本都好像运行在ksh上一样, 反过来看, 这是因为Chet Ramey一直致力于将ksh的特性移植到Bash的最新版本上.
对于商业UNIX机器来说, 如果在脚本中包含了使用GNU特性的标准命令, 那么这些脚本可能不会正常运行. 但是在最近几年, 这个问题得到了极大的改观, 这是因为即使在"大块头"UNIX上, GNU工具包也非常好的替换掉了同类的私有工具. 对于原始的UNIX来说, 源代码的火山喷发加剧了这种趋势.
Bash具有的某些特性是传统的Bourne shell所缺乏的. 下面就是其中的一部分:
请参考Bash F.A.Q., 你将会获得完整的列表.