myscript.sh
와 같은 명령을 호출하는 쉘 스크립트가 있습니다 mycmd
. 예를 들어 터미널에서 스크립트를 실행하면 ./myscript.sh
모든 것이 잘 작동합니다.
하지만 crontab에 스크립트를 추가하면 출력이 mycmd
비어 있습니다. 내가 전화했을 때 /usr/local/bin/mycmd
모든 것이 myscript.sh
정상으로 돌아 왔습니다.
그렇다면 실행 파일에 대한 절대 경로를 사용해야 하는 이유는 무엇입니까? $PATH
"cron-bash"에 없기 때문입니까 ?
답변1
당신 말이 맞습니다. 환경에는 아마도 포함되지 않은 cron
환경이 있을 것입니다 . 스크립트의 다음 위치에 디렉터리를 추가하면 이 문제를 해결할 수 있습니다 .PATH
/usr/local/bin/
PATH
PATH="$PATH:/usr/local/bin/"
그러나 모범 사례 는 (예를 들어) 편리하게 호출되는 악의적으로 설계된 프로그램 cp
이 .PATH
/bin