다음 줄로 시작하는 CGI 스크립트를 디버깅하려고 합니다.
#!/usr/bin/env python3
물론 문제는 $PATH
Apache 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
그 일을 하는 데 어떤 문제가 있는지 어느 정도 알고 있습니다.)