Eu diria que # 2, mas muito perto do # 1 - "Mau. Mau. Mau. Nunca faça isso." O padrão, como é, para scripts de inicialização do Linux está no LSB e, embora nunca saia e diga "esses são scripts de bourne shell", várias suposições são feitas. Um, que as linhas que começam com # são comentários, funciona bem. Mais problemático é o requisito de que o script init execute os comandos /lib/lsb/init-functions
"no ambiente atual (consulte o ponto de comando interno especial do shell)".
Mas o mais importante, se você está fazendo algo realmente complicado aqui, está fazendo errado. Os scripts init devem ser muito simples e utilitários. Eles devem ser scripts no sentido clássico, não programas. É melhor absorver e criar um script de shell simples para que qualquer administrador de sistemas possa facilmente criar um olhar rápido do que criar algo bonito e projetado em Python.
Outra consideração a ter em mente é systemd
: o que pode ou não ser o futuro de toda a inicialização do sistema no Linux. No systemd, a inicialização é feita por arquivos de configuração simples, e não por scripts, com a idéia de que toda a inicialização se encaixa em vários padrões de design padrão e, na verdade, você deve escolher apenas um. Se o seu programa usa algo complicado para a inicialização, isso deve sair do próprio script init.