ฉันกำลังทำงานกับไฟล์หน่วยสำหรับบริการ systemd บางอย่าง คำนำหน้าเส้นทางไปยังไบนารีบางส่วนของฉันค่อนข้างยาวและมีการใช้หลายครั้งในคำสั่ง ExecStart=, ExecStartPost= และ ExecStop=
ฉันมีตัวแปรสภาพแวดล้อมบางอย่างที่กำหนดไว้ (ซึ่งจำเป็นต้องส่งผ่านไปยังบริการด้วย) เช่น:
สภาพแวดล้อม=ORACLE_HOME=/u01/app/oracle/product/19/db_1
ฉันเชื่อจากส่วน "บรรทัดคำสั่ง" ใน systemd.service(5) ว่าฉันควรจะสามารถใช้การขยายตัวแปรในส่วนคำสั่ง Exec*= - เช่น:
ExecStart=${ORACLE_HOME}/bin/dbstart
เมื่อฉันลองและโหลด systemctl daemon-reload ฉันได้รับข้อผิดพลาดต่อไปนี้ในสมุดรายวัน:
systemd[1]: [/usr/lib/systemd/system/oracle.service:37] เส้นทางปฏิบัติการไม่สมบูรณ์ ละเว้น: ${ORACLE_HOME}/bin/dbstart /u01/app/oracle/product/19/db_1
เอกสาร systemd ค่อนข้างชัดเจนว่าเส้นทางไปยังไฟล์ที่จะเรียกใช้ต้องเริ่มต้น (ยกเว้นคำนำหน้าที่อนุญาต) ด้วย / แต่มีความแตกต่างเล็กน้อยของไวยากรณ์ที่ฉันขาดหายไปซึ่งจะช่วยให้ฉันทำในสิ่งที่ฉันต้องการได้หรือไม่
ในที่สุดฉันต้องการมีไฟล์ที่มีตัวแปรสภาพแวดล้อมที่ใช้เพื่อให้สามารถใช้ในไฟล์ systemd unit และสำหรับการตั้งค่าโปรไฟล์ ฯลฯ
ฉันใช้ RHEL7 และ RHEL8