ตามที่มนุษย์:
cron daemon เริ่ม subshell จากไดเรกทอรี HOME ของคุณ หากคุณกำหนดเวลาคำสั่งให้รันเมื่อคุณไม่ได้ล็อกอินและคุณต้องการคำสั่งในไฟล์. profile ของคุณให้รันคำสั่งต้องอ่านไฟล์. profile ของคุณอย่างชัดเจน
cron daemon ระบุสภาวะแวดล้อมดีฟอลต์สำหรับทุกเชลล์กำหนด HOME, LOGNAME, SHELL (= / usr / bin / sh)
และ PATH (= / usr / bin)
ดังนั้น cron daemon ไม่ทราบว่า php อยู่ที่ไหนและคุณควรระบุเส้นทาง php แบบเต็มด้วยมือเช่น (ฉันไม่ทราบเส้นทาง PHP จริงของคุณ):
#!/bin/sh
/usr/local/bin/php /home/v/file.php
sh /root/x/some.sh
อีกวิธีหนึ่งคือแหล่งที่มา / etc / profile (หรือ. profile / .bashrc ของคุณ) เป็นต้น
* * * * * . /home/v/.bashrc ; sh /home/v/test.sh
สิ่งนี้มีประโยชน์หาก. bashrc ของคุณตั้งค่าตัวแปรสภาพแวดล้อมที่คุณต้องการ (เช่น PATH)
แก้ไข
การอ่านที่น่าสนใจคือ " Newbie: Intro to cron " อย่าดูเบาบทความจากชื่อเรื่อง (มันเป็นการอ่านสำหรับทุกคน) อันที่จริงมันเขียนได้ดีและตอบคำถามของคุณได้อย่างสมบูรณ์แบบ:
...
PATH มีไดเรกทอรีที่จะอยู่ในเส้นทางการค้นหา cron เช่นหากคุณมีโปรแกรม 'foo' ในไดเรกทอรี / usr / cog / bin มันอาจคุ้มค่าที่จะเพิ่ม / usr / cog / bin ไปยัง เส้นทางเนื่องจากจะทำให้คุณไม่ต้องใช้เส้นทางแบบเต็มเพื่อ 'foo' ทุกครั้งที่คุณต้องการโทรหา
...