Variáveis de ambiente Cron

2

Estou executando um script de shell simples que funciona muito bem em um shell de login de cron , onde ele não é executado. Por algum motivo, /usr/local/bin não está no caminho dos usuários quando executado a partir de cron enquanto é executado em um shell.

Onde o ambiente para cron é determinado?

    
por tpg2114 20.01.2012 / 01:26

2 respostas

1

Geralmente, a partir do ambiente de não-login estabelecido para /bin/sh , que é o padrão usado para executar o comando.

Você pode definir variáveis de ambiente adicionais no seu crontab na maioria das versões, vis:

PATH=/usr/local/bin:/usr/bin:/bin
@reboot whatever

Verifique crontab(5) para detalhes; man 5 crontab

    
por 20.01.2012 / 01:29
0

Verifique qual shell seu script está usando.

O shell e as variáveis para o crontab estão especificados em / etc / crontab

x@x:~$ cat /etc/crontab 

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

O arquivo de perfil usado por sh está na página inicial do usuário.

x@x:~$ ls ~/.profile 
/home/x/.profile

Você pode adicionar a variável PATH no final deste arquivo (Certifique-se de adicionar o arquivo de perfil do usuário correto)

PATH="$PATH:/usr/local/bin"

ou você pode adicionar a mesma linha em seu próprio script.

    
por 20.01.2012 / 02:46

Tags