Por que a substituição de comandos no trabalho do crontab não funciona?

0

crontab -l:

* * * * * /Users/michel/Desktop/myScript.sh

myScript.sh:

#!/bin/bash
/usr/local/bin/growlnotify -t 'Fact' -m "$(/Users/michel/Desktop/anotherScript.sh data.txt)" -n 'myApp'

ele não informa um erro, mas a mensagem do growlnotify está vazia, então "$(/Users/michel/Desktop/anotherScript.sh data.txt)" não funcionou.

mas se eu executar /usr/local/bin/growlnotify -t 'Fact' -m "$(/Users/michel/Desktop/anotherScript.sh data.txt)" -n 'myApp' do bash manualmente, ele trabalha de forma planejada.

    
por static 22.05.2013 / 18:52

1 resposta

1

Scripts shell invocados de cron são shells não-login, não-interativos, o que significa que eles são invocados em um ambiente drasticamente reduzido, e não criam nenhum dos scripts de inicialização típicos do shell ( .profile , .bashrc , etc.).

Acredito que anotherScript.sh depende de algo que não está disponível por padrão neste modo. Como algo que é definido nos arquivos de inicialização habituais de login ou shell interativo que não foram obtidos.

Veja a man page de bash (excelente) sobre as diferentes maneiras que o bash pode ser invocado, e quais arquivos de inicialização ele procura em cada caso.

    
por 22.05.2013 / 19:13