我正在构建基于 bash 脚本的安装程序,其中需要设置一个 systemd 单元。我可以对典型的 systemd 单元文件位置进行硬编码,例如/etc/systemd/system
或 ,/usr/lib/systemd/system
但我希望脚本能够检测系统的首选位置以添加新的单元文件和服务。
我当然可以通过使用和查找现有的服务单元文件来做到这一点,但是如果已经有一个我可以调用的find
现有全局变量(例如),我想避免增加太多的复杂性$HOME
答案1
据我所知,所有系统都是一样的。联机帮助页提供了许多见解 - https://www.freedesktop.org/software/systemd/man/systemd.unit.html
System Unit Search Path
/etc/systemd/system.control/*
/run/systemd/system.control/*
/run/systemd/transient/*
/run/systemd/generator.early/*
/etc/systemd/system/*
/etc/systemd/system.attached/*
/run/systemd/system/*
/run/systemd/system.attached/*
/run/systemd/generator/*
…
/usr/lib/systemd/system/*
/run/systemd/generator.late/*
如果您正在构建服务单元文件,那么您可能应该将文件安装在 中/etc/systemd/system
,其中的描述为“管理员创建的系统单元”。
代码中有几个地方使得这些路径中的大多数看起来不太可能被更改,并且/etc/systemd/system
看起来是硬编码的