Darwin/MacOS是否修改了Bash?

Darwin/MacOS是否修改了Bash?,macos,bash,portability,Macos,Bash,Portability,我想知道使用Bash内置命令的Bash脚本的可移植性 我知道每种风格的UNIX都倾向于修改各种UNIX实用程序。但是,它们是否倾向于单独使用Bash和Bash内置程序?特别是MacOS呢?苹果使用的是相当旧的Bash版本,因为它们不提供GPL3许可的代码。您可以下载当前版本,并看到它至少声称是香草版Bash 3.2(尽管显然已经添加了Xcode项目)。据我所知,Bash在Mac OS X上没有修改(除了编译所需的一些小调整;您可以在上查看源代码),脚本应该是可移植的 正如格雷厄姆·李和戈登·戴维

我想知道使用Bash内置命令的Bash脚本的可移植性


我知道每种风格的UNIX都倾向于修改各种UNIX实用程序。但是,它们是否倾向于单独使用Bash和Bash内置程序?特别是MacOS呢?

苹果使用的是相当旧的Bash版本,因为它们不提供GPL3许可的代码。您可以下载当前版本,并看到它至少声称是香草版Bash 3.2(尽管显然已经添加了Xcode项目)。

据我所知,Bash在Mac OS X上没有修改(除了编译所需的一些小调整;您可以在上查看源代码),脚本应该是可移植的

正如格雷厄姆·李和戈登·戴维森所指出的那样,MacOSX附带的是较旧的版本,受支持的版本之间存在差异。Bash 4具有关联数组和。Bash3包括正则表达式匹配(可能还有其他我没有搜索过的)。记不起Bash 2的差异,可能是括号/条件测试的差异

MacOSX10.7.xLion包括Bash3.2.X。我想不起确切的版本,但MacOSX10.6.xSnowLeopard和10.5.xLeopard包括Bash3.X。MacOSX10.4.xTiger和更早的版本使用了Bash2.0.5。因此,您肯定会遇到默认支持的内容之间的差异

当然,除了Mac OS X上不同
bash
版本的功能集和内置功能之间的差异之外,您还可以在其他工具中找到差异。例如,Mac OS X上存在
getopt
问题(参数中不支持经常在Mac OS X目录/文件路径中找到的空格;较新
bash
版本中的内置
getopts
可以帮助解决此问题,但在较旧版本中可能不可用)。当然,也会有其他具有不同功能或语法的工具


我肯定不是bash的专家,但我已经编写了许多支持各种版本的macosx特定脚本。有关2.x和3.x正则表达式特性和解决方法的讨论,请参阅我的文章。或者,我的一些
bash
脚本已经把macosx考虑得很重:&.

bash版本4没有在达尔文或macoslion上发布。 因此mac不支持对read命令等的改进,这是不幸的


cygwin有Bash4.1.10,我想是的。Bash已经存在很长时间了,目前非常稳定,并且没有添加新功能。那么为什么会有人搞砸它呢?@ControlAltDel:事实上,bash v4.0中添加了一些重要的功能(例如关联数组),而OS X版本(3.2)没有。似乎找不到达尔文开发者的任何注释,所以可能是库存。我希望有一个明确的方式知道。这是如何回答这个问题的?提问者问了关于bash和MacOS的问题。不要屏息等待苹果使用最新版本的BASH.截至2017年3月5日,苹果公司正在运载GNU BASH,版本3.2.57(1)版本(X86Y64-APPL-DARWI16)版权(C)2007免费软件基金会,因此基本上落后了十年。