Linux 中的 Bash 与 Mac 操作系统中的 Bash

Linux 中的 Bash 与 Mac 操作系统中的 Bash

我要买一台 iMac。我在 Linux 上工作了很长时间,并且编写了大量 bash 脚本。我想知道所有 bash 命令和功能是否都可以在 Mac OS 上使用?有人有 Mac bash 脚本编写经验吗?我很欣赏你的意见。

答案1

Bash 本身基本上是一样的。会有几个小差异但这些都不会影响脚本的可移植性。

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

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

答案2

如果重要的话,bashMac OS X Mountain Lion 仍然是 3.2 版本。如今大多数 Linux 发行版都附带 4.x,因此您将错过版本 4 的功能。目前,Homebrew 提供了 4.2.45 版本作为解决方法。我不知道小牛队的版本是什么,我不确定任何知道的人都可以说。

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

答案3

安装自制的(包管理器)然后安装一些基本实用程序的 gnu 版本:

$ brew install coreutils
$ brew install gnu-sed

每次安装后,它都会显示您可以遵循的步骤,以便您可以简单地调用date而不是gdate例如,以便您仍然可以使用 Linux bash 脚本而无需任何修改。

恭喜,您刚刚解决了 99% 的跨平台脚​​本问题。

答案4

我是一个“主要是 Linux,偶尔是 Mac”用户,我发现:

bash,~/.bashrc并且~/.bash_aliases大部分工作原理相同。

我发现的一个问题是更改颜色提示的命令之一在 Mac 上不起作用。从这次经历和其他经验中,我学会了在设置文件时保持终端窗口打开并登录.bashrc。那就是我可以测试“新窗口”并找到仍然登录的窗口中的任何错误。

相关内容