$PATH 환경 변수는 어떤 프로세스에 속합니까? [폐쇄]

$PATH 환경 변수는 어떤 프로세스에 속합니까? [폐쇄]

환경 변수는 프로세스에 속해야 합니다. 그렇죠? $PATH 및 $HOME과 같은 사실상의 "전역" 환경 변수가 있는 것으로 보입니다. 어떤 프로세스에 속해 있나요?

답변1

단일 PATH 변수가 없으며 단일 프로세스에 속하지 않습니다.

모든 프로세스에는환경, 이는 키-값 쌍 목록으로 구성됩니다. 키는 일반적으로 "변수"로 명명됩니다. 이 export명령은 환경을 나열합니다. 프로세스는 상위 프로세스로부터 환경을 상속받습니다(UNIX에서는 상위 프로세스가 종료되기 전에도 가능합니다. 멋지지 않나요?).

예를 들어 어떤 변수든 환경에 넣을 수 있지만 export birthday="Jan 23"HOME 또는 PATH와 같은 일부 변수는 셸에서 특별한 의미를 갖습니다. 다른 변수는 일부 프로그램에서 특별한 의미를 갖습니다. 예를 들면 다음을 참조하세요.환경 부분명령에 대한 매뉴얼 페이지에서 man.

요약하면 모든 프로세스에는 PATH와 HOME이 있습니다.

답변2

환경은 일반적으로 다음을 통해 새 프로세스로 전달됩니다.구현하다배열이 보관되어 있는 메모리 영역에 대한 포인터를 사용하십시오 envp.

   int execve(const char *pathname, char *const argv[],
              char *const envp[]);

환경은 일반적으로 상속되지만 기본적 /etc/environment으로 예를 들어 (core $PATH)를 읽어서 구축되기도 합니다. Bourne 쉘은 /etc/profile로컬 구성 파일 등도 읽습니다.

위의 내용 외에도,POSIX 구현*독서가 도움이 될 수 있습니다.

관련 정보