OS X用の最小POSIXシェル実装はありますか?私は移植性の高いシェルスクリプトを書くのが大好きで、できるだけ多くの非互換性や悪用の例を捉えたいと思います。システムを交換するつもりはありません/bin/sh
。
/bin/sh
OS 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
2つのファイルは異なりますが、報告されたバージョン文字列は同じです。しかし、なぜこのようなことが起こるのでしょうか?
$ 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互換シェルはありますか?、答えによると、標準はいくつかの場所であいまいです。
答え2
また、以下がdash
あります。
Schily Bourne ShellはOpenSolaris Bourne Shellソースから派生しました。
pkgin/pkgsrcにあります。
2つのオプションpkgin
:
- 最小POSIX互換バリアント(pbosh)
- POSIX準拠の拡張バリアント(bosh)
Joyentはマクロを提供しますpkgin バイナリパッケージ
http://schilytools.sourceforge.net/bosh.html
Macでは使用していませんが、OpenSolarisのバリエーションを使用してきました。