首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Darwin/MacOS会修改Bash吗?

Darwin/MacOS会修改Bash吗?
EN

Stack Overflow用户
提问于 2012-05-03 01:19:19
回答 3查看 1.3K关注 0票数 4

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

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

EN

回答 3

Stack Overflow用户

发布于 2012-05-03 03:58:22

据我所知,bash在Mac上是未经修改的(除了需要对其进行编译所需的小调整之外;您可以在http://opensource.apple.com/上查看源代码),并且脚本应该是非常可移植的。

正如Graham Lee和戈登·戴维森指出的那样,Mac与较旧的版本一起提供,并且支持的版本之间存在差异。Bash4有关联数组和other changes。Bash 3包括正则表达式匹配(可能还有其他我没有搜索过的内容)。不记得Bash 2的不同之处了,也许是一些括号/条件测试的不同?

Mac OS X 10.7.x Lion包含Bash 3.2.x。我已经记不起确切的版本了,但Mac 10.6.x Snow Leopard和10.5.x Leopard都包含Bash 3.x。Mac OS X 10.4.x Tiger和更早的版本使用Bash 2.0.5。因此,你肯定会遇到缺省支持的差异。

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

我绝对不是一个专业的bash开发人员,但我已经编写了许多支持各种版本的Mac特定脚本。有关2.x与3.x正则表达式特性和变通方法的讨论,请参阅我的Regular Expressions in Bash and Alternatives文章。或者,我的一些将Mac纳入考虑范围的bash脚本:tools-osxbash_stub

票数 4
EN

Stack Overflow用户

发布于 2012-05-03 01:25:10

苹果使用的是一个相当老的Bash版本,因为他们不会发布在GPL3下授权的代码。您可以下载当前版本的from Apple's open source site,并看到它至少声称是vanilla Bash3.2(尽管很明显已经添加了Xcode项目)。

票数 3
EN

Stack Overflow用户

发布于 2014-07-08 22:01:36

bash版本4没有在Darwin或MacOS Lion上提供。所以mac不支持对read命令的改进,等等,这是不幸的。

cygwin有bash 4.1.10

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10418616

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档