"set +h"를 하위 프로세스에 상속할 수 있나요?

"set +h"를 하위 프로세스에 상속할 수 있나요?

set +h호출되는 쉘 스크립트의 효과를 상속받을 수 없는 것 같습니다.

이것은 쉘 스크립트( ./call)입니다.

#!/bin/bash

set +h
export SHELLOPTS

./called

이는 다음과 같습니다 ./called.

#!/bin/bash

echo \$-=$-
echo SHELLOPTS=$SHELLOPTS

실행하면 ./call다음이 인쇄됩니다.

$-=hB
SHELLOPTS=braceexpand:hashall:interactive-comments

내보낼 때 쉘 옵션이 상속되었다고 생각했습니다 SHELLOPTS. 이것은 분명히 사실이 아닙니다.

set +h호출되는 쉘 스크립트의 효과를 상속하는 방법이 있습니까?

답변1

~에서배쉬 매뉴얼:

SHELLOPTS에 나타나는 옵션은 "set -o"에 의해 "on"으로 보고된 옵션입니다. Bash 시작 환경에 이 변수가 있으면 시작 파일을 읽기 전에 목록의 각 셸 옵션이 활성화됩니다.

옵션이 표시됩니다.끄다에는 나타나지 않으므로 SHELLOPTS새 쉘이 이를 활성화하거나 비활성화하는지 여부에 영향을 미치지 않습니다.

다음 방법 중 하나를 시도해 볼 수 있습니다.

  • bash +h ./called스크립트 사용 또는 실행
  • set +h파일을 넣고 이것이 영향을 미칠 것이라고 생각하여 BASH_ENV해당 파일의 경로를 설정하십시오.export모두bash 인스턴스 중 하나가 설정을 해제하거나 내보내기를 취소하지 않는 한 bash 인스턴스는 해당 라인을 따라 시작됩니다.

관련 정보