![EnvironmentFile 変数から ExecStart に内部引用符を渡す](https://rvso.com/image/718120/EnvironmentFile%20%E5%A4%89%E6%95%B0%E3%81%8B%E3%82%89%20ExecStart%20%E3%81%AB%E5%86%85%E9%83%A8%E5%BC%95%E7%94%A8%E7%AC%A6%E3%82%92%E6%B8%A1%E3%81%99.png)
EnvironmentFile には次の内容が含まれています:
EBUSD_OPTS="--scanconfig -d /dev/ttyEBUS -c /etc/ebusd --log=\"all notice\" --log=\"update error\""
.service ファイル内:
EnvironmentFile=-/etc/default/ebusd
ExecStart=/usr/bin/ebusd $EBUSD_OPTS
--log= の後の引用符は変更されずに実行ファイルに渡されるはずですが、うまくいかないようです。二重引用符、一重引用符、二重、三重の内側の引用符のエスケープ、外側の単一の引用符など、あらゆるタイプを試しましたが、成功しませんでした。
答え1
EnvironmentFileから外側の引用符を削除します
EBUSD_OPTS=--scanconfig -d /dev/ttyEBUS -c /etc/ebusd --log="all notice" --log="update error"
ExecStart に中括弧を追加します。
ExecStart=/usr/bin/ebusd ${EBUSD_OPTS}
また、中括弧の後に末尾のスペースを入れる必要がありました。