환경 변수는 사용자 환경 설정만을위한 것이 아닙니다. 부모 프로세스에서 시작되는 자식 프로세스로 다양한 설정 정보를 전달하는 일반적인 메커니즘입니다.
프로세스가 시작하는 프로세스 에만 영향을주기 위해 프로세스가 특정 환경 변수를 설정하는 경우가 많이 있습니다 . 예를 들어, 스크립트는 시작된 명령에 대한 로케일 설정을 의도적으로 재설정하여 출력을 구문 분석 할 수 있습니다. 많은 대형 소프트웨어 패키지의 빌드 스크립트는 make
환경 변수를 통해 서로 조정 된 중첩 호출을 사용 합니다. 특수 도구는 $ LD_PRELOAD 또는 $ PATH로 트릭을 수행하여 시작하는 다른 프로그램의 작업 조건을 변경해야 할 수도 있습니다.
긴 컴파일이 다른 컴파일에서 실행되는 동안 사용자가 다른 창에서 수행하는 작업은 모든 프로세스 의 환경 변수를 등 뒤에 마 법적으로 변경하면 광기와 혼돈이 발생합니다.
다른 환경 변수에는 프로세스가 시작된 특정 세션에 대한 정보가 포함됩니다. 프로그램은 $ TERM이 연결된 특정 터미널 (또는 터미널 에뮬레이터)의 명령 세트를 설명 할 것으로 예상합니다. 일반적인 사용자 별 설정으로 인해 여러 종류의 터미널을 사용하여 동일한 시스템에 로그인 할 수 없습니다. 터미널 하드웨어가 하나만 있고 원격으로 로그인하지 않더라도 screen
세션 내에서 실행되는 프로세스에 대해 다른 $ TERM 설정에 의존하는 것과 같은 프로그램 이 있습니다.
더 나은 질문은 왜 사용자 별 데이터베이스가 아닌 사용자 기본 설정에 프로세스 간 프로세스 통신 메커니즘을 사용하는 것입니까?
답변 : 제대로 작동 하고 사용자 별 데이터베이스를 만드는 이점 은 환경 변수 대신 사용 하도록 모든 것을 변경하는 작업이 수행 될만큼 충분히 크지 않기 때문입니다.
이 곳 (나는 거의 기본 설정 생각할 수 없는 것 , 예를 들어, 그냥 하나의 스크립트를 실행을 변경하기 편리 몇 가지 사용 사례를합니다. 그래서를 위해하지 잃게 기능에, 모든 것이 여전히 필요가 재정의 하여 환경 변수-복잡성을 증가시키고 사용자를 혼란스럽게 만듭니다.
대안이 존재 하지 않는 것처럼 보이지 않습니다 . 예를 들어 X 리소스는 프로세스가 아닌 디스플레이 세션 당입니다. 그러나 그들은 명령 줄 프로그램에 대한 액세스가 어렵습니다 - 그리고 명령 줄 프로그램은 일반적으로조차하지 않는 원격 로그인에 대한 작업에 필요 가 에 연결하는 X 서버를.