33.9. 移植话题
优质
小牛编辑
136浏览
2023-12-01
这本书是关于在GNU/Linux系统下的Bash编程. 但同样,sh和 ksh用户也能在这儿得到许多有用的价值.
以现在的情况来看,许多种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缺乏的一些属性. 下面是其中一些:
一些扩展的 调用选项(invocation options)
使用 $( )结构来完成命令替换(Command substitution)
Bash的 内建(builtins)命令
参考 BashF.A.Q.查看完整的列表.