強制POSIXモード

強制POSIXモード

中括弧の拡張(例:{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アプレット、いくつかの拡張機能もありますが、ほとんどは静的に無効にすることができます。

おすすめ記事