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 인스턴스는 해당 라인을 따라 시작됩니다.