
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/bin
não está no caminho do usuário quando executado cron
enquanto está em um shell.
Onde está o ambiente cron
determinado?
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.