A minha pergunta é: como posso modificar o script para que ele me diga o que está errado?
O cenário é este:
Estou tentando fazer com que o Sonatype Nexus inicie como um serviço no Ubuntu 10.04, e isso simplesmente não funcionará.
(Não estou procurando ajuda sobre como executar o Nexus, mas sobre como obter uma saída útil de um script)
Funciona ao invocá-lo com
sudo /etc/init.d/nexus start
mas falha ao usar
sudo service nexus start
Eu executei o comando update-rc.d nele e fiz tudo de acordo com as instruções.
O script nexus init.d tem um ponto em que se chama quando detecta que deve ser executado como outro usuário ('nexus'):
su -m $RUN_AS_USER -c "\"$REALPATH\" "
que se expande para
su -m nexus -c '"/opt/nexus-2.0.2/bin/jsw/linux-x86-64/nexus" start'
ao adicionar o sinalizador de depuração -x ao script. Esse comando resulta no código de retorno 1. Ele nunca é executado - configurei o sinalizador -x debug no script, coloquei os comandos echo com o redirecionamento para o arquivo no início do script a ser rastreado, etc.
Não consigo obter nenhuma saída me dizendo por que o comando não será executado. Eu tentei anexar o redirecionamento ao arquivo após a linha de script acima, dentro das aspas, do lado de fora, de qualquer maneira que eu pudesse imaginar. Todas as informações que posso obter são inserindo uma linha
echo $?
após a linha su, que produz "1".
Existe uma maneira de ver o que acontece quando o comando su é executado?