systemd prepending / bin to Environment PATH

时间:2016-09-19 14:46:02

标签: systemd

我尝试将Bamboo代理设置为systemd服务。服务文件如下所示:

[Unit]
Description=Atlassian Bamboo Agent
After=syslog.target network.target

[Service]
Type=forking
User=bamboo
Group=bamboo
ExecStart=/opt/bamboo-1/bin/bamboo-agent.sh start
ExecStop=/opt/bamboo-1/bin/bamboo-agent.sh stop
Environment="PATH=/opt/rh/devtoolset-3/root/bin/:/usr/local/bin:/usr/bin"

[Install]
WantedBy=multi-user.target

当我检查进程环境时,PATH被正确设置为我期望的值,唯一的例外是我的PATH前面加上/bin

cat /proc/12345/environ <--- 12345 is my Bamboo PID
...
PATH=/bin:/opt/rh/devtoolset-3/root/bin/:/usr/local/bin:/usr/bin
...

这意味着我的构建将使用错误的gcccmake

有没有办法阻止/bin加在PATH之前?

1 个答案:

答案 0 :(得分:3)

我创建了一个测试服务,在使用新路径设置Environment=之后打印出路径,并发现它在Ubuntu 16.04上使用systemd 229按预期工作。

我的结论是,您的脚本中的某些内容已预先挂起/ bin到您的环境中。

systemd.exec手册页中没有任何内容表明systemd的设计行为与您观察的方式相同。