Lucrez la unele fișiere unitare pentru unele servicii systemd. Prefixul de cale către unele dintre binarele mele este destul de lung și sunt folosite de mai multe ori în clauzele ExecStart=, ExecStartPost= și ExecStop=.
Am câteva variabile de mediu definite (care trebuie să fie transmise serviciului), de exemplu:
Mediu=ORACLE_HOME=/u01/app/oracle/product/19/db_1
Cred, din secțiunea „Linii de comandă” din systemd.service(5), că ar trebui să pot folosi extinderea variabilă în clauzele Exec*= - de exemplu:
ExecStart=${ORACLE_HOME}/bin/dbstart
Când încerc asta și fac un systemctl daemon-reload, primesc următoarea eroare în jurnal:
systemd[1]: [/usr/lib/systemd/system/oracle.service:37] Calea executabilă nu este absolută, ignorând: ${ORACLE_HOME}/bin/dbstart /u01/app/oracle/product/19/db_1
Documentele systemd sunt destul de clare că calea către fișierul de rulat trebuie să înceapă (cu excepția prefixelor permise) cu /, dar există o nuanță a sintaxei care îmi lipsește, care să-mi permită să fac ceea ce vreau?
În cele din urmă, aș dori să am fișiere care conțin variabilele de mediu care sunt utilizate, astfel încât acestea să poată fi utilizate în fișierele de unitate systemd și, de asemenea, pentru configurarea profilurilor etc.
Folosesc RHEL7 și RHEL8.