[unix] 시스템 단위에 대한 PATH 설정

CentOS 7에서 비 로그인 쉘에 대한 PATH를 어떻게 설정합니까?

특히,에 바이너리가 필요한 시스템 단위가 /usr/local/texlive/2016/bin/x86_64-linux있습니다.

나는 그것을에서 설정하는 시도 /etc/environmentPATH=/usr/local/texlive/2016/bin/x86_64-linux:$PATH하지만 내 PATH이었다 /usr/local/texlive/2016/bin/x86_64-linux:$PATH:/usr/local/sbin:/usr/sbin.

나는 /etc/profile.d/texlive.sh함께 export PATH="/usr/local/texlive/2016/bin/x86_64-linux:${PATH}"만들었지 만 로그인 쉘에서만 작동했습니다.

모든 사용자 (로그인 및 비 로그인 셸)의 경로 설정을 살펴 보았지만 솔루션은 이미 위에서 시도되었습니다.

데비안에서 모든 사용자의 비 로그인 셸 및 로그인 셸에 대해 시스템 $ PATH에 경로를 추가하는 방법을 보았지만 허용되는 해결책이 없으며 /etc/login.defs업데이트에서 변경 될 수 있으므로 수정하고 싶지는 않습니다 .



답변

가장 간단한 대답은 systemd Unit 파일에서 명령의 PATH일부로 설정하는 것 ExecStart입니다. 예를 들어 현재

ExecStart=/bin/mycmd arg1 arg2

그런 다음

ExecStart=/bin/bash -c 'PATH=/new/path:$PATH exec /bin/mycmd arg1 arg2'

확장은 $PATH시스템화되지 않은 bash에 의해 수행됩니다. 사용과 같은 대안 Environment=PATH=/new/path:$PATH은 systemd로 확장되지 않습니다 $PATH.


답변