Este pode ser o comportamento pretendido. A página de manual mostra uma opção --env para start-stop-daemon :
-e|--env env-name
Set an environment variable whose name and value is env-name
before starting executable. Example: -e HOME="/home/user"
exports an environment variable whose name is HOME with value
"/home/user". Note, only one --env option is suppoted, use
/usr/bin/env if you need more.
O autor usou $HOME no exemplo, o que considero significar que normalmente não seria definido. Não vejo outras opções para atualizar o ambiente do processo que você está iniciando.
Tente executar start-stop-daemon da seguinte forma:
USER=guest HOME=~guest start-stop-daemon --start --exec /path/to/prog ...
Outra alternativa seria executar o script em sudo :
start-stop-daemon --start --exec /usr/bin/sudo -- -H -u guest /path/to/prog
sudo definirá automaticamente $USER e a opção -H também definirá $HOME . Eu corri os dois com o meu próprio test.sh que imprime o valor dessas variáveis, e ambos os atualizaram conforme desejado. Eu sou parcial para o primeiro porque ele não adiciona outro programa para o mix, mas isso é só comigo.