일부 프로세스에서 $PATH를 수동으로 설정해야 하는 이유는 무엇입니까?

일부 프로세스에서 $PATH를 수동으로 설정해야 하는 이유는 무엇입니까?

다음 줄로 시작하는 CGI 스크립트를 디버깅하려고 합니다.

#!/usr/bin/env python3

물론 문제는 $PATHApache HTTPd와 내 쉘(특히)의 환경 변수가 다르다는 것입니다.

.profile좀 더 조사한 결과 셸이 를 $PATH호출하여 시스템 전체에 전달된다는 사실을 발견했습니다 /usr/libexec/path_helper. /usr/libexec/path_helper이를 호출하고 출력을 echo $PATH.

Apache HTTPd에 대한 경로는 이 값과 다릅니다. 이로 인해 HTTPd가 값을 수동으로 설정한다고 가정하게 되었습니다 $PATH.

내 질문은, 왜? 프로세스를 수동으로 설정하는 이유는 무엇입니까 $PATH? 제 생각엔 이게 /usr/libexec/path_helper일종의 시스템 표준인 것 같은데요, 그렇죠?

따라서 문제는 시스템 수준 표준처럼 보이는 $PATH일부 시스템 수준 표준을 호출하는 대신 프로세스를 수동으로 설정하는 이유입니다 /usr/libexec/path_helper.

답변1

/usr/libexec/path_helper나는 이것을 Mac OS에서만 본 적이 있습니다. 데몬(특히 Apple에서 관리하지 않는 데몬) 사이에는 명확한 차이가 있습니다.

실제로, 일부 사용자가 가지고 놀 수 있는 임의의 패키지를 설치했기 때문에 네트워크 데몬이 새 경로를 선택한 경우 갑자기 네트워크 데몬이 잘못된 경로에서 잘못된 도구를 호출하거나 네트워크 데몬에 특정 버전이 필요할 수 있습니다. 소프트웨어의

(그런데 나는 그것을 완전히 비활성화하고 모든 곳에서 /usr/libexec/path_help수동으로 설정했지만 PATH그 일을 하는 데 어떤 문제가 있는지 어느 정도 알고 있습니다.)

관련 정보