시스템 단위에 대한 PATH 설정


13

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

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

나는 그것을에서 설정하는 시도 /etc/environment로 PATH=/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.