시스템 단위에 대한 PATH 설정


13

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업데이트에서 변경 될 수 있으므로 수정하고 싶지는 않습니다 .

답변:


17

가장 간단한 대답은 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.


이 방법으로 명령을 래핑하고 profile.d 파일을 사용하는 경우 (로그인 쉘에도 경로를 추가하고 싶습니다) ExecStart에서 경로를 설정해야합니까? 아니면 profile.d에서 읽습니까?
Agrajag9

ExecStart에서 PATH를 설정해야한다고 생각합니다. bash는 아마도 로그인 쉘인 경우 profile.d에서만 읽을 수 있습니다. PATH를 설정하는 대신 강제로 추가 --login하기 전에 -cbash를 추가 할 수는 있지만 bash는 시스템 환경에서 제대로 작동하지 않을 수있는 많은 설정을 실행하고 저널 로그에 오류를 발생시킵니다.
meuh
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.