Como a pasta padrão muda se eu executar um script em um shell?

0

Se eu correr

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

o script funciona como planejado, ele lê um arquivo chamado /home/.homeassistant/configuration.yaml

mas se eu criar um script de shell que eu execute a partir de rc.local:

./restart.sh > /tmp/log_restart &

restart.sh:

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

Eu recebo este erro:

O arquivo

não existe: /root/.homeassistant/configuration.yaml

Parece que a pasta raiz foi alterada, o que posso fazer?

    
por Kristoffer Nolgren 03.06.2017 / 13:40

1 resposta

0

O problema aqui é que o que você está fazendo inicialmente é sobre configurar shells interativos e trabalhar dentro deles. A linha source ... não é executada até que a linha sudo seja concluída, elas não são executadas no mesmo contexto no script.

Para fazer isso, o que você provavelmente deve fazer é colocar apenas as linhas source e hass em um script e em rc.local run su -c /path/to/restart.sh homeassistant

Como rc.local é executado como root, você não precisa da sudo part

    
por 03.06.2017 / 14:00