하위 쉘에 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

관련 정보