为系统单元设置PATH

Modified on: Sat, 30 Jun 2018 12:15:00 +0800

如何在CentOS 7中为非登录shell设置PATH?

具体来说,我有一个systemd单元需要/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但仅适用于登录shell。

我查看了为所有人设置路径用户(登录和非登录shell)但上面已经尝试过该解决方案。

我看了如何在debian上为所有用户的非登录shell和登录shell添加系统$ PATH的路径,但是没有可接受的解决方案,我不确定是否要修改/etc/login.defs,因为它可能会在更新中被更改。

最佳答案

最简单的答案是将PATH设置为systemd单元文件中ExecStart命令的一部分。例如,如果您目前有

ExecStart=/bin/mycmd arg1 arg2

然后将其更改为

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

$PATH的扩展将由bash完成,而不是systemd。使用Environment=PATH=/new/path:$PATH等替代方法将无效,因为systemd不会扩展$PATH

作者:,meuh

相关问答

添加新评论