Если я бегу

sudo su -s /bin/bash homeassistant
source /srv/homeassistant/bin/activate
hass --script check_config

скрипт работает как задумано, он читает файл с именем /home/.homeassistant/configuration.yaml

но если я создаю shell-скрипт, который запускаю из rc.local:

./restart.sh > /tmp/log_restart &

restart.sh:

sudo su -s /bin/bash homeassistant
source /srv/homeassistant/bin/activate
hass --script check_config

Я получаю эту ошибку:

файл не существует: /root/.homeassistant/configuration.yaml

Кажется, что корневая папка изменена, что я могу сделать?

1 ответ1

0

Проблема здесь в том, что сначала вы настраиваете интерактивные оболочки, а затем работаете в них. Строка source ... не выполняется до тех пор, пока не завершится строка sudo , они не запускаются в одном контексте в скрипте.

Чтобы сделать это, то , вероятно , вы должны сделать , это поместить только строки source и hass в сценарии, и в rc.local перспективе su -c /path/to/restart.sh homeassistant

Поскольку rc.local запускается от имени пользователя root, вам не нужна часть sudo

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .