쉘 스크립트 실행과 도트 실행을 식별하는 방법


2

현재 프로세스에서 실행해야 유용한 bash 스크립트를 작성 중입니다.

그건 내가 스크립트가 호출되었는지 확인하려면,이다 source script.sh또는 . ./script.sh수 없습니다 ./script.sh .

차이점을 모르는 사람들은 이것을 참조하십시오 : Bash 스크립트 실행과 소싱의 차이점은 무엇입니까?

나는 내가 할 수있는 알고 chmod u-x script.sh그것을 소싱없이 실행되지 않을 수 있지만, 사용자는 스크립트로 인식 할 수 있습니다 chmod그 자체. 존재하는 경우보다 우아한 솔루션을 원합니다.

스크립트가 호출되지 않았 source거나 .오류와 함께 종료 되지 않았다는 것을 스크립트가 인식하는 방법이 있습니까?

답변:


1

에서 소스를 제공하는 bash경우 $0is bash또는 -bash:

[[ $0 =~ ^-?bash$ ]] && echo "Thank you for sourcing me"

또는 스크립트가 호출 script.sh되었지만 소스가 어떤 쉘인지 상관하지 않으면 테스트를 반전하십시오.

[ "X$(basename -- "$0")" != "Xscript.sh" ] && echo "Thank you for sourcing me"

위의 내용은 일반적인 (POSIX) 셸을위한 것이기 때문에 [[테스트를 사용하지 않습니다 .

관련 문제에 대한 자세한 내용은 StackOverflow를 참조하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.