Eu tenho um script que é executado na inicialização do rc.local no CentOS. Este script contém um comando para compilar meu projeto erlang usando um comando de compilação de terceiros chamado rebar. A linha do vergalhão não compila meu projeto na inicialização, mas se eu o executar manualmente, o projeto é compilado corretamente. Eu presumo que isso seja porque o comando rebar chama outros comandos sem caminhos absolutos.
Como posso executar um comando na inicialização, mas em um contexto que não requer caminhos absolutos?
Eu não quero ter que consertar este comando de terceiros (e lidar com a inevitável burocracia que atende a essa bagunça) e / ou manter meu próprio fork paralelo do projeto apenas para manter esse recurso extra.
Também estou curioso para saber por que não posso usar o Google. Parece que ele deve surgir com tanta frequência que as pessoas desejam usar um comando em rc.local que não usa todas as chamadas de comando de caminho absoluto. Além disso, eu sinto que a resposta deve ser trivial, já que eu posso fazer o login imediatamente após a inicialização e executar qualquer comando que eu goste, como root, que é o usuário que o rc.local também executa! Não há um gancho onde você pode executar um script no contexto de "sim, nós realmente somos inicializados todo o caminho agora, vamos executar este script como um usuário totalmente par no sistema sem quaisquer limitações arbitrárias"?
Esta não é a primeira vez que me deparo com este problema e gostaria de entender o que está acontecendo.
EDITAR:
(Eu não vou esperar 8 horas para responder minha pergunta, então ...)
Bem, parece que a configuração do PATH funciona. Acho que tive a impressão de que os comandos em rc.local e seus filhos não são procurados no PATH, mesmo depois de chamar um script, mas isso é errado. (@TiZon me deu uma boa pista.) O motivo de ter essa impressão é porque cada resultado do Google disse ao questionador para usar caminhos absolutos em chamadas de comando, mesmo que isso seja complicado para qualquer coisa além de scripts ou scripts triviais que dependem de comandos de terceiros que não seguem essa regra. Em vez disso, a resposta é chamar o bash script com uma linha shebang adequada, descobrir qual é o PATH do seu ambiente normal fazendo eco durante uma sessão regular e, em seguida, definir o PATH no script bash de inicialização para o regular.
Espero que esta resposta chegue ao Google e ajude outras almas perdidas.