![Передача внутренних кавычек из переменной EnvironmentFile в ExecStart](https://rvso.com/image/718120/%D0%9F%D0%B5%D1%80%D0%B5%D0%B4%D0%B0%D1%87%D0%B0%20%D0%B2%D0%BD%D1%83%D1%82%D1%80%D0%B5%D0%BD%D0%BD%D0%B8%D1%85%20%D0%BA%D0%B0%D0%B2%D1%8B%D1%87%D0%B5%D0%BA%20%D0%B8%D0%B7%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D0%BD%D0%BD%D0%BE%D0%B9%20EnvironmentFile%20%D0%B2%20ExecStart.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}
Мне также пришлось поставить завершающий пробел после скобки.