Agr*_*ag9 19 centos path systemd
如何在 CentOS 7 中为非登录 shell 设置 PATH?
具体来说,我有一个 systemd 单元,它需要/usr/local/texlive/2016/bin/x86_64-linux
.
我试图将它设置为/etc/environment
withPATH=/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}"
但仅适用于登录外壳。
我查看了所有用户的设置路径(登录和非登录外壳),但上面已经尝试了解决方案。
我查看了如何在 debian 上为所有用户的非登录 shell 和登录 shell 添加系统 $PATH 的路径,但没有公认的解决方案,我不确定是否要修改,/etc/login.defs
因为它可能会在更新中更改。
meu*_*euh 21
最简单的答案是在 systemd 单元文件中将 设置PATH
为ExecStart
命令的一部分。例如,如果您目前有
ExecStart=/bin/mycmd arg1 arg2
Run Code Online (Sandbox Code Playgroud)
然后将其更改为
ExecStart=/bin/bash -c 'PATH=/new/path:$PATH exec /bin/mycmd arg1 arg2'
Run Code Online (Sandbox Code Playgroud)
的扩展$PATH
将由 bash 完成,而不是 systemd。诸如 using 之类的替代方法Environment=PATH=/new/path:$PATH
将不起作用,因为 systemd 不会扩展$PATH
.