UFO ET IT

Unix / Linux 컨텍스트에서 파일이`source`-d이면 어떻게됩니까?

ufoet 2020. 12. 8. 20:29
반응형

Unix / Linux 컨텍스트에서 파일이`source`-d이면 어떻게됩니까?


다음과 같은 줄이 포함 된 셸 스크립트를 보았습니다.

source someOtherFile

의 내용이 someOtherFile실행 되는 것을 알고 있지만 의의는 source무엇입니까?


후속 질문 : 모든 스크립트를 소싱 할 수 있습니까? 아니면 특정 유형의 스크립트 만 사용할 수 있습니까? 스크립트를 소싱 할 때 환경 변수 이외의 부작용이 있습니까 (일반적으로 실행하는 것과 반대)?


source스크립트 에서 명령 을 실행하면 현재 프로세스의 컨텍스트 내에서 스크립트가 실행됩니다. 즉, 스크립트에서 설정 한 환경 변수는 실행이 완료된 후에도 계속 사용할 수 있습니다. 이는 스크립트를 정상적으로 실행하는 것과는 대조적입니다.이 경우 새로 생성 된 프로세스 내에 설정된 환경 변수는 스크립트가 종료되면 손실됩니다.

실행 가능한 모든 쉘 스크립트를 소싱 할 수 있습니다. 최종 효과는 스크립트의 명령을 터미널에 입력 한 것과 같습니다. 예를 들어, 스크립트가 디렉토리를 변경하면 실행이 완료되면 현재 작업 디렉토리가 변경됩니다.


예를 들어 bash와 같은 쉘에 파일을 읽고 파일의 명령을 실행하도록 지시하면 소싱이라고합니다. 요점은 새로운 자식 프로세스가 아니라 현재 프로세스 (셸)가이를 수행한다는 것입니다.

BASH에서 source명령을 사용 하거나 단순히 .파일을 소싱 할 수 있습니다.


source현재 컨텍스트에서 실행되는 명령 목록으로 명령 다음에 나오는 파일을 평가하는 Unix 명령입니다. .파일 소싱에 사용할 수도 있습니다 .

source my-script.sh;
. my-script.sh;

두 명령 모두 동일한 효과를 갖습니다.

반대로 스크립트 파일 이름을 원하는 쉘에 전달하면 현재 컨텍스트가 아닌 서브 쉘에서 스크립트가 실행됩니다.

참고 URL : https://stackoverflow.com/questions/9326695/what-occurs-when-a-file-is-source-d-in-unix-linux-context

반응형