Variáveis ​​de ambiente Cron

Variáveis ​​de ambiente Cron

Estou executando um script de shell simples que funciona perfeitamente em um shell de login cron, onde não é executado. Por alguma razão, /usr/local/binnão está no caminho do usuário quando executado cronenquanto está em um shell.

Onde está o ambiente crondeterminado?

Responder1

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

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

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

Verifique crontab(5)detalhes;man 5 crontab

Responder2

Verifique qual shell seu script está usando.

O shell e as variáveis ​​do crontab sã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.

informação relacionada