OS X 是否有最小的 POSIX shell?

OS X 是否有最小的 POSIX shell?

OS X 是否有最小的 POSIX shell 实现?我喜欢编写相当可移植的 shell 脚本,并希望预先捕获尽可能多的不兼容或攻击。我无意更换系统/bin/sh

/bin/shOS X 上10.11.4是 GNU bash 3.2.57 或基于它的。

$ /bin/sh --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin15)
Copyright (C) 2007 Free Software Foundation, Inc.

/bin/bash尽管两个文件不同,但报告的版本字符串相同。顺便说一下为什么会这样?

$ diff /bin/sh /bin/bash
Binary files /bin/sh and /bin/bash differ

不管怎样,POSIX 兼容模式bash仍然会做一些标准不要求的事情(并且事实上并不像 那样通用local),例如这种形式的大括号扩展。

$ echo {1..10}
1 2 3 4 5 6 7 8 9 10

答案1

MacPorts 有dash,这就是 Debian 使用的。对于该选择和其他选择,请阅读是否有最低限度兼容 POSIX.2 的 shell?,其中答案指出该标准在某些地方是模糊的。

答案2

除了 之外dash,还有:

Schily Bourne Shell 源自 OpenSolaris 的 Bourne Shell 源。

可以在 pkgin/pkgsrc 上找到。

两个选项pkgin

  • 最小 POSIX 兼容变体 (pbosh)
  • 符合 POSIX 标准的扩展变体 (bosh)

Joyent 提供 macospkgin 二进制包

http://schilytools.sourceforge.net/bosh.html

我没有在 Mac 上使用过它,但使用过 OpenSolaris 的各种变体。

相关内容