33.9. 移植话题

这本书是关于在GNU/Linux系统下的Bash编程. 但同样,shksh 用户也能在这儿得到许多有用的价值.

以现在的情况来看,许多种shell和脚本语言都尽力使自己符合 POSIX 1003.2 标准. 用 --posix 选项调用Bash或在脚本开头插入 set -o posix 就能使Bash能以很接近这个标准的方式运行. 在脚本开头用
   1 #!/bin/sh
比用
   1 #!/bin/bash
会更好.注意在Linux和一些UNIX风格的系统里/bin/sh是/bin/bash的一个链接(link), 并且如果脚本以/bin/sh调用时会禁用Bash的扩展功能.

大多数的Bash脚本能不作修改就能运行在 ksh下, 反之亦然, 因为 Chet Ramey 辛勤地把 ksh 的属性移植到了最新的Bash版本.

在商业的 UNIX 机器上, 使用了GNU扩展属性的标准命令的脚本可能不会工作. 这个问题在最近几年已经有所改观了, 因为GNU软件包完美地代替了在这些"大块头的"UNIX运行的相应工具. 源码分发 给传统UNIX上加快了这种趋势.

Bash 有传统的 Bourne shell 缺乏的一些属性. 下面是其中一些:

参考 Bash F.A.Q. 查看完整的列表.