我想知道使用 Bash 内置命令的 Bash 脚本的可移植性。
据我了解,每种 UNIX 风格都倾向于修改各种 UNIX 实用程序。但他们是否倾向于不理睬 Bash 和 Bash 内置函数呢?尤其是 MacOS 呢?
据我所知,bash 在 Mac OS X 上未经修改(除了编译所需的细微调整之外;您可以查看源代码http://opensource.apple.com/),并且脚本应该非常可移植。
正如 Graham Lee 和 Gordon Davisson 指出的那样,Mac OS X 附带较旧的版本,并且受支持的版本之间存在差异。 Bash 4 有关联数组其他变化。 Bash 3 包括正则表达式匹配(可能还有我没有搜索过的其他匹配)。不记得 Bash 2 的差异,也许是一些括号/条件测试的差异?
Mac OS X 10.7.x Lion 包括 Bash 3.2.x。我不记得确切的版本,但 Mac OS X 10.6.x Snow Leopard 和 10.5.x Leopard 包含 Bash 3.x。 Mac OS X 10.4.x Tiger 及更早版本使用 Bash 2.0.5。因此,您肯定会遇到默认支持的内容之间的差异。
当然,除了不同功能集和内置功能之间的差异之外bash
Mac OS X 上的版本,您还会发现其他工具的差异。例如,有getopt
Mac OS X 上的问题(参数中不支持在 Mac OS X 目录/文件路径中常见的空格;内置getopts
在较新的bash
版本可以帮助解决此问题,但在旧版本中可能不可用)。当然,还会有其他具有不同功能或语法的工具。
我绝对不是专家bash
开发人员,但我已经写了一个number支持各种版本的 Mac OS X 特定脚本。看我的Bash 中的正则表达式及其替代方案讨论 2.x 与 3.x 正则表达式功能和解决方法的文章。或者,我的一些bash
重点考虑了 Mac OS X 的脚本:工具-OSX & bash_存根.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)