2016-02-16 5 views
11

ユニットファイルsystemdのPATH変数を設定する正しい方法は何ですか? いくつかの例を見てから、以下の形式を使用しようとしましたが、変数が拡張されていないようです。systemd:PATHを設定する "Environment"指示

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

私は、このバージョンのsystemdでCoreOSを試しています。

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

答えて

16

EnvironmentディレクティブでEnvVarsを使用することはできません。 Environment=全体は無視されます。 EnvironmentFile=を使用すると、指定されたファイルは置換されずにロードされます。だからPATH=/local/bin:$PATHと正確にはであり、これはおそらくあなたが望むものではありません。

CentOS7の下では、次のように動作します。

# /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

これは私のPATHに '/ bin'が前に付いていることを除いて私にとってはうまくいきます。これは私のカスタムPATHを設定する目的に反するものです。つまり、 'Environment =" PATH = foo:bar "を追加すると、私は自分のサービスのために' PATH =/bin:foo:bar'を得ることになります。 – Xabs

+0

Jutsは私のコメントを適切な質問に変換しました:http://stackoverflow.com/questions/39576006/systemd-prepending-bin-to-environment-path – Xabs

+0

この回答は、PATH( 'Environment =" PATH =/local/PATH( 'Environment =" PATH =/local/bin:$ PATH "')に追加/追加されていないのですが、右ですか? –

1

あなたは、環境変数を設定するunitsセクションでEnvironmentFile=ディレクティブを使用することができます。

変数をkey=valueペアにするだけで動作します。

ランタイムは、指定したファイルのソースです。

write_filesディレクティブを使用してファイルを作成できます。

関連する問題