中括弧の拡張(例:{a、b、c})POSIX が定義されていません。。 POSIXモードでシェルを実行したいです。 Debian の場合、これは簡単です。
$ bash -c 'echo {a,b,c}'
a b c
$ sh -c 'echo {a,b,c}'
{a,b,c}
しかし、Fedoraは異なる動作をします。
$ bash -c 'echo {a,b,c}'
a b c
$ sh -c 'echo {a,b,c}'
a b c
オプションを試してみました--posix
が、うまくいきませんでした。
$ sh --posix -c 'echo {a,b,c}'
a b c
BashをPOSIXモードで強制的に実行できますか?
ベストアンサー1
バッシュは言うことができます支柱の拡張を無効にするset +B
、これは次の逆数ですset -B
。
-雨シェルは中括弧拡張を実行します(参照:サポート拡張)。このオプションはデフォルトで有効になっています。
シェルを起動すると、コマンドラインに次の情報を提供することもできます。
$ bash +B -c 'echo {a,b,c}'
{a,b,c}
と組み合わせることができます。--posix
またはset -o posix
オプション全体のPOSIXの動作に近い。また、shopt -s xpg_echo
少なくとも有効にする必要があります。
他のコーナーもあります。多くの拡張機能がかなりしっかりと位置づけられており、Bashが実際の動作のみをサポートするようにすることは不可能だと思います。必須POSIX経由。これもdash
できません。
ただし、以下を見つけることもできます。dash
(Debianのデフォルト/bin/sh
)これはいくつかの拡張もサポートしていますが、拡張動作を避けることが目標である場合はより便利です。しかもBusyBoxash
アプレット、いくつかの拡張機能もありますが、ほとんどは静的に無効にすることができます。