2016-02-16 11 views
11

Qual è il modo corretto per impostare la variabile PATH in un file di unità systemd? Dopo aver visto alcuni esempi, ho provato a usare il formato sottostante, ma la variabile non sembra espandersi.systemd: direttiva "Ambiente" per impostare PATH

Environment="PATH=/local/bin:$PATH" 

Sto provando questo su CoreOS con la versione successiva di systemd.

systemd 225 
-PAM +AUDIT +SELINUX +IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT -GNUTLS -ACL +XZ -LZ4 +SECCOMP +BLKID -ELFUTILS +KMOD -IDN 

risposta

16

Non è possibile utilizzare EnvVars nelle direttive Environment. L'intero Environment= verrà ignorato. Se si utilizza EnvironmentFile=, il file specificato verrà caricato senza sostituzione. Quindi PATH=/local/bin:$PATH sarebbe esattamente che, e probabilmente non è quello che vuoi.

Sotto CentOS7 i seguenti lavori.

# /etc/systemd/system/nagios.service.d/env.conf 
[Service] 
Environment="PATH=/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin" 

> sudo systemctl daemon-reload 
> sudo systemctl restart nagios 
> sudo cat /proc/28647/environ 
... 
PATH=/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin 
... 
+0

Questo funziona per me, con la sola eccezione che il mio PERCORSO è preceduto da '/ bin', e che vanifica lo scopo di impostare il mio PATH personalizzato. Cioè, se aggiungo 'Environment =" PATH = foo: bar "' Alla fine ottengo 'PATH =/bin: foo: bar' per il mio servizio. – Xabs

+0

Juts ha convertito il mio commento in una domanda corretta: http://stackoverflow.com/questions/39576006/systemd-prepending-bin-to-environment-path – Xabs

+0

Questa risposta funziona per impostare PATH ('Environment =" PATH =/local/bin'), ma non aggiungendo/anteponendo a PATH ('Environment =" PATH =/local/bin: $ PATH "'), giusto? –

1

È possibile utilizzare la direttiva EnvironmentFile= nella sezione units per impostare le variabili d'ambiente.

Basta inserire le variabili come coppie key=value e funzionerà.

Il runtime è solo 'fonte di qualsiasi file specificato.

È possibile creare il file utilizzando la direttiva write_files.

Problemi correlati