나는 실행하는 경우 set -x
에 의해 다음, 쉘에서 옵션 설정 스크립트를 실행 set -x
스크립트 내부 작업을하지 않습니다.
모든 쉘 옵션이 스크립트에 의해 상속되지 않는지 궁금합니다.
나는 이것이 bash 매뉴얼에 언급되어 있음을 찾지 못했습니다. 내가 찾은 유일한 관련성은 "달리 명시되지 않는 한 값은 쉘에서 상속됩니다." 그래서 쉘 옵션이 상속 된 것 같습니다. 매뉴얼에서 그리워합니까?
스크립트가 쉘 옵션을 상속하도록하는 방법을 묻는 관련 질문 을 읽었습니다 . 나는 방법 대신에 그 이유와 이유가 궁금했다.
감사.
내장 또는 쉘 함수 이외의 간단한 명령이 실행될 경우 다음으로 구성된 별도의 실행 환경에서 호출됩니다. 달리 명시하지 않는 한 값은 셸에서 상속됩니다.
• 셸의 열린 파일 및 명령에 대한 리디렉션으로 지정된 수정 및 추가
• 현재 작업 디렉토리
• 파일 생성 모드 마스크
• 내보내기 위해 표시된 셸 변수 및 함수, 명령을 위해 내 보낸 변수, 환경에 전달 (37 페이지 3.7.4 절 [환경] 참조)
• 셸에서 잡은 트랩은 셸의 부모로부터 상속 된 값으로 재설정되고 셸에서 무시되는 트랩은 무시됩니다.이 별도의 환경에서 호출 된 명령은 셸의 실행 환경에 영향을 줄 수 없습니다.
의 경우 환경 bash
에 있는지 여부에 따라 다릅니다 $SHELLOPTS
.
bash-4.4$ export SHELLOPTS
bash-4.4$ set -x
bash-4.4$ bash -c 'echo x'
+ bash -c 'echo x'
+ echo x
x
옵션이 어떻게 bash -c 'echo x'
상속 되었는지 확인하십시오 xtrace
. 로 설정된 옵션 shopt
의 경우 동일하지만 $BASHOPTS
변수가 있습니다.
특히 스크립트 (또는 스크립트 xtrace
를 실행하는 bash
모든 명령 bash
) 및이 bash
스크립트가 호출 할 수있는 다른 모든 스크립트 를 실행하려는 경우 디버깅 옵션에 유용합니다 ( 해당 스크립트에서 xtrace
아무것도 수행하지 않는 경우 set +x
). 귀하의 경우 sh
IS bash
, 그는 또한 또한 그들에 영향을 미칠 system("command line")
다른 언어로 만든 :
env SHELLOPTS=xtrace some-command
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다