Shell 可移植性问题与扩展
1. 概述
POSIX 定义的 shell 语言比原始的 V7 Bourne shell 大很多,但比 ksh93 和 bash 这两个最常用的 Bourne shell 扩展版本所实现的语言小得多。如果要进行利用 shell 语言扩展的重型脚本编写,很可能会使用这两个 shell 中的一个或两个。因此,熟悉它们的共同特性和差异是很有价值的。随着时间的推移,bash 已经获得了 ksh93 的许多扩展,但并非全部。所以,它们有相当多的功能重叠,但也有很多不同之处。
2. 需要注意的问题
2.1 保存 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.state
需要注意
超级会员免费看
订阅专栏 解锁全文
3426

被折叠的 条评论
为什么被折叠?



