Caminho absoluto em scripts bash

3

Eu tenho um script de shell myscript.sh que chama um comando, digamos mycmd . Quando eu executo esse script a partir do terminal, por exemplo ./myscript.sh , tudo funciona bem.

Mas quando eu adiciono esse script ao crontab, a saída de mycmd está vazia. Quando eu chamo /usr/local/bin/mycmd dentro de myscript.sh , tudo funciona bem novamente.

Então, por que eu tenho que usar o caminho absoluto do executável? É porque não está no $PATH do "cron-bash"?

    
por Elastic Lamb 06.02.2017 / 19:19

1 resposta

4

Você está certo - o ambiente de cron pode ter um PATH que não inclui /usr/local/bin/ . Você pode corrigir isso, em seu script, anexando esse diretório ao PATH :

PATH="$PATH:/usr/local/bin/"
A melhor prática, na verdade, é usar caminhos explícitos para todos os binários externos que um script chama apenas no caso (por exemplo) de um programa mal-intencionado convenientemente chamado cp é descartado no PATH em algum lugar antes de /bin .

    
por 06.02.2017 / 19:24