셸이 아닌 실행 파일이 활성 셸에 파일을 제공할 수 있나요?

셸이 아닌 실행 파일이 활성 셸에 파일을 제공할 수 있나요?

쉘을 사용할 때 (내가 아는 한) 단일 행을 포함하는 쉘 스크립트가 source somefile상위 쉘에 영향을 미치는 것은 불가능합니다(물론 스크립트 자체가 소스 코드가 아닌 한).

source셸이 아닌 실행 파일(예: C로 작성된)이 효과적으로 파일이 될 수 있고 마치 source somefile명령줄에 입력하는 것처럼 셸에서 모든 것을 사용할 수 있는지 궁금합니다 .

답변1

$ type source
source is a shell builtin

그것이 가능한 것입니다 (원래 더 긴 질문에 더 의미가 있습니다).

아니요, 외부 프로그램에서 동작을 복제할 수 없습니다 source(입력 버퍼링 트릭을 활용하지 않는 한). 이는 동일합니다 cd. 쉘만이 자체 내부 상태를 수정할 수 있으므로 쉘 내장 기능만 쉘의 내부 상태를 수정할 수 있습니다.

관련 정보