시스템 서비스에서 /etc/environment가 작동하지 않는 이유

시스템 서비스에서 /etc/environment가 작동하지 않는 이유

PATHin을 설정했고 /etc/environment어떤 사용자로든 로그인하면 작동하지만 어떤 사용자로든 서비스를 실행하면 in이 존중되지 않습니다 /etc/environment.

답변1

사용자가 로그인하면 PAM 라이브러리가 호출되며 일반적으로 pam_env.so사용자를 위한 환경을 설정하기 위해 PAM 구성이 호출됩니다. 이 설정에는 읽기가 포함됩니다 /etc/environment.

기존 SysVinit 서비스 시작 스크립트에서는 su루트가 아닌 사용자로 서비스를 시작할 수 있습니다. 일반 사용자 로그인과 마찬가지로 suPAM 라이브러리도 호출되므로 읽을 수 있습니다 ./etc/environment

그러나 systemdPAM 라이브러리가 전혀 존재하지 않는 임베디드 시스템에서도 작동하도록 설계되었습니다. 따라서 systemd 서비스가 루트가 아닌 사용자로 실행되도록 구성된 경우 systemd외부 라이브러리에 의존하지 않고 환경 초기화가 처리됩니다.

보다ENVIRONMENTsystemd.exec(5)맨 페이지 단락서비스 파일의 설정을 사용하여 서비스 환경을 조정할 수 있습니다. 제공되는 기본값은 거의 없으므로 systemd서비스를 초기화하는 데 필요한 사항을 명시해야 합니다(일반적으로 좋은 방법입니다).

예를 들어 간단히 추가할 수 있습니다.

EnvironmentFile=/etc/environment

서비스 정의를 입력하세요.

PATH그러나 서비스가 몇 가지 다른 작업을 시작해야 하는 경우 서비스 경로 이름과 관련되지 않은 이유로 수정되는 것에 의존하는 것보다 일부 구성 파일에서 이를 절대 경로 이름으로 명시적으로 지정하는 것이 더 안전할 수 있습니다 . 불쾌한 놀라움.

관련 정보