子シェルにbashフラグを設定する - 親シェルに影響しますか?

子シェルにbashフラグを設定する - 親シェルに影響しますか?

Bashスクリプトには次のものがあります。

(
  set -o pipefail
  echo "foobar" | bash
  set +o pipefail
)

パイプライン障害設定をリセットする必要がありますか、またはその行を省略できますか?つまり、サブシェルのパイプ障害設定が親シェルに影響しますか?

したがって、これは次のように仮定することを意味します。

(
  set -o pipefail
  echo "foobar" | bash
)

上記の内容と本当に違いませんか?

ベストアンサー1

引用するマニュアルページ:

サブシェル環境への変更は、シェルの実行環境には影響しません。

ケースを簡単にテストできます。

$ set +o pipefail
$ (set -o pipefail)
$ shopt -o pipefail
pipefail        off

おすすめ記事