如果我在 shell 中运行脚本,默认文件夹会如何变化?

如果我在 shell 中运行脚本,默认文件夹会如何变化?

如果我跑

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和行,然后在运行中hassrc.localsu -c /path/to/restart.sh homeassistant

由于rc.local以 root 身份运行,因此你不需要该sudo部分

相关内容