Shell 可移植性问题与扩展
1. 概述
POSIX 定义的 shell 语言比原始的 V7 Bourne shell 大得多,但比 ksh93 和 bash 这两种最常用的 Bourne shell 扩展版本所实现的语言小得多。如果你要进行利用 shell 语言扩展的重型脚本编写,很可能会使用这两种 shell 中的一种或两种。因此,熟悉它们的共同特性和差异是很有价值的。随着时间的推移,bash 已经获得了 ksh93 的许多扩展,但并非全部。所以,它们有相当多的功能重叠,但也有很多差异。
2. 注意事项
以下是一些需要注意的问题:
-保存 shell 状态:可以将 shell 的状态保存到文件中,但 POSIX 标准中没有定义保存函数定义以便后续恢复的方法。以下是保存 bash 和 ksh93 包括函数在内的 shell 状态的示例代码:
{ set +o # Option settings (shopt -p) 2>/dev/null # bash-specific options, subshell silences ksh set # Variables and values export -p # Exported variables readonly -p # Read-only variables trap # Trap settings typeset -f # Function definitions (not POSIX) } > /tmp/shell.st