
cron
나는 실행되지 않는 로그인 셸에서 잘 실행되는 간단한 셸 스크립트를 실행하고 있습니다 . 어떤 이유로 셸에서 실행될 때 /usr/local/bin
실행될 때 사용자 경로에 없습니다 .cron
환경은 어디에서 cron
결정됩니까?
답변1
일반적으로 에 대해 설정된 비로그인 환경에서 /bin/sh
, 이는 명령을 실행하는 데 사용되는 기본값입니다.
대부분의 버전에서는 crontab에서 추가 환경 변수를 설정할 수 있습니다.
PATH=/usr/local/bin:/usr/bin:/bin
@reboot whatever
자세한 내용을 확인하세요 crontab(5)
.man 5 crontab
답변2
스크립트가 어떤 쉘을 사용하고 있는지 확인하십시오.
crontab의 쉘과 변수는 /etc/crontab에 지정됩니다.
x@x:~$ cat /etc/crontab
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
sh에서 사용하는 프로필 파일은 사용자 홈에 있습니다.
x@x:~$ ls ~/.profile
/home/x/.profile
이 파일 끝에 PATH 변수를 추가할 수 있습니다(올바른 사용자의 프로필 파일에 추가하고 있는지 확인하세요).
PATH="$PATH:/usr/local/bin"
또는 자신의 스크립트에 동일한 줄을 추가할 수 있습니다.