如果我跑
sudo su -s /bin/bash homeassistant
source /srv/homeassistant/bin/activate
hass --script check_config
该脚本按预期工作,它读取一个名为 /home/.homeassistant/configuration.yaml 的文件
但如果我创建一个从 rc.local 运行的 shell 脚本:
./restart.sh > /tmp/log_restart &
重启.sh:
sudo su -s /bin/bash homeassistant
source /srv/homeassistant/bin/activate
hass --script check_config
我收到此错误:
文件不存在:/root/.homeassistant/configuration.yaml
好像根文件夹已更改,我该怎么办?
答案1
这里的问题是,您首先要做的就是设置交互式 shell,然后在其中工作。该source ...
行直到完成才会执行sudo
,它们不在脚本中的同一上下文中运行。
要做到这一点,你可能应该做的就是在脚本中只放入source
和行,然后在运行中hass
rc.local
su -c /path/to/restart.sh homeassistant
由于rc.local
以 root 身份运行,因此你不需要该sudo
部分