OS X cron e variáveis de ambiente

2

Atualmente, estou definindo várias variáveis de ambiente no OS X em / etc / profile usando o comando de exportação. Estes são todos listados corretamente quando eu faço check-in no terminal, no entanto, quando um script é executado através do cron, nenhuma dessas variáveis é configurada.

Pelo que entendi, o cron roda com suas próprias variáveis de ambiente, mas como eu posso colocar meus customizados no ambiente cron também?

Por favor explique da maneira mais simples possível, como você deve ter adivinhado, isso não é algo que eu conheço muito.

Obrigado Jack

    
por Jack Sleight 24.07.2009 / 12:33

3 respostas

1

Eu não chequei em detalhes, mas o bash manpage explica (search for INVOCATION) que o bash não lê o / etc / profile quando não é invocado como um login ou shell interativo.

O programa de login sempre inicia o shell como um shell de login, então eu acho que o cron não e o shell não lê nenhum arquivo de perfil (de acordo com a página man ele leria o arquivo dado na variável ENV quando o shell estava começou, mas o cron não parece ter uma opção para definir isso).

Descobri que geralmente é problemático confiar em quaisquer configurações globais (por exemplo, PATH) nos scripts de tarefas cron para definir minhas próprias configurações em cada script.

    
por 24.07.2009 / 13:22
3

O utilitário cron é executado em um ambiente muito limitado. Isso significa que você precisa soletrar as coisas de uma maneira que você não faria se estivesse trabalhando interativamente na linha de comando (por exemplo, /usr/bin/perl em vez de apenas perl ).

Vale dizer também que a Apple recomenda launchd over cron . (Eu realmente uso o cron em Macs, mas apenas porque estou acostumado com isso em máquinas Linux. Eu continuo querendo mudar).

    
por 24.07.2009 / 13:35
2

No arquivo crontab , você pode especificar o ambiente variáveis:

FOO=bar

0 * * * * echo $FOO

O acima deve ecoar "bar" a cada hora.

    
por 24.07.2009 / 12:43