fork()
우리는 프로세스의 환경 변수 세트가 시스템 호출 이후와 이전의 일정 기간 동안만 변경될 수 있다는 것을 알고 있습니다 exec()
. 예를 들어 이러한 작업은 적절한 API를 통해서만 상위 프로세스에서 하위 프로세스로 수행될 수 있습니다.
export
그러나 내장된 bash를 사용하면 bash는 어떻게든 현재 프로세스(셸 인스턴스)의 환경 변수를 변경합니다.
당신은 그렇게 않았다 방법? 비열한 수단을 사용했습니까?
답변1
bash
메모리의 변수를 업데이트하기만 하면 됩니다. 이름에도 불구하고 환경 변수는 값이 하위 프로세스의 환경에 복사되는 셸 변수일 뿐입니다. 셸 인스턴스가 시작되면 =
"name"(첫 번째 항목 앞의 부분)이 유효한 셸 식별자인 환경 문자열을 사용하여 내보내기 속성이 설정된 셸 변수를 생성합니다. 새 프로세스가 시작되면 내보낸 속성 집합(환경에서 또는 나중에 설정)이 있는 모든 셸 변수가 프로세스 환경에 추가됩니다.