Linux 与 Mac OS 中的 Bash

ale*_*lex 34 osx bash-script

我要买 iMac。我已经在 Linux 上工作了很长时间,我做了一堆 bash 脚本。我想知道 Mac OS 上是否可以使用所有 bash 命令和功能?任何人都对 Mac bash 脚本有任何经验?我感谢您的意见。

小智 34

Bash 本身将大体相同。会有一些小的差异,但这些都不会影响脚本的可移植性。

主要问题是 MacOS 的 coreutils 是基于 FreeBSD 的,而您习惯的实用程序很可能来自 GNU 项目。FreeBSD coreutils 并不总是与 GNU coreutils 兼容。sedgrepps其他实用程序的 GNU 和 FreeBSD 版本之间存在性能和行为差异。

您可以安装 GNU coreutils,但它们有g-前缀(例如gcatfor cat)。这不是一个好主意的GNU的coreutils更换的MacOS的coreutils。

  • 应该强调的是,使用标准的基于 FreeBSD 的核心实用程序*可能*影响脚本的可移植性(例如,`ps` 具有不同的标志,`grep` 也是如此)。我曾几次用头撞墙,试图弄清楚为什么我的 Ubuntu 脚本在我的 Mac 上没有产生相同的输出。 (7认同)

bah*_*mat 5

如果重要的话,bash在 Mac OS X 上 Mountain Lion 仍然是 3.2 版。现在大多数 linux 发行版都附带 4.x,因此您将缺少第 4 版的功能。目前,Homebrew 提供了 4.2.45 版作为解决方法。我不知道小牛队是什么版本,我不确定知道的人是否可以说。

正如其他人所提到的,bash是相同的bash(除了已经提到的版本),但 Mac OS X 使用(主要是)BSD 用户空间。许多标准系统实用程序的选项略有不同或行为略有不同。不幸的是,它们太多了,无法在此列出。

  • 4 年后,High Sierra 上的 bash 仍在使用:GNU bash,版本 3.2.57(1)-release (x86_64-apple-darwin17) 版权所有 (C) 2007 Free Software Foundation, Inc. (2认同)