OK, eu entendi. O problema foi:
- Executar meu script como root, o que normalmente aconteceria, não funcionará. É por isso que é necessário usar
su [my_user] -c
-
É necessário usar aspas para as opções, ou seja.
su my_user -c "/usr/bin/vncserver -geometry 1280x1024 -depth 16"
-
Também adicionei . /lib/lsb/init-functions
e exit 0
- não sei se são necessários, mas com certeza não causam nenhum dano. Apenas copiei aqueles do exemplo elaborado fornecido por tohuwawohu .
Então acabei com:
### BEGIN INIT INFO
# Provides: startVNC
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop:
# Short-Description: Start VNC server at boot time
# Description: A sophisticated script to do the job.
### END INIT INFO
#!/bin/sh
echo "JOB RUN AT $(date)"
echo "============================"
echo ""
. /lib/lsb/init-functions
su my_user -c "/usr/bin/vncserver -geometry 1280x1024 -depth 16"
exit 0
O que funciona bem. É claro que usar o script citado elaborado pode ser ainda melhor. Eu adicionei o script para iniciar por:
sudo update-rc.d -f startVNC start 99 2 3 4 5 .
porque não vejo nenhum motivo para executar qualquer coisa no desligamento (além do registro, o que não estou fazendo).
Veja também o comentário sobre o shebang (a linha que começa com #!) sendo perdida aqui sob a minha pergunta original. Funciona, portanto, não quis incluir o código não testado aqui. Você deve alterá-lo provavelmente se quiser usá-lo.