Run-parts vs. user crontab execution
One caveat when running programs via run-parts (e.g., /etc/cron.hourly, /etc/cron.daily, etc.) vs. user crontabs is the HOME environment variable.
- By default, HOME is set to / in /etc/crontab, so all scripts executed via run-parts have a HOME of /.
- By default, HOME is the home directory in /etc/passwd of the crontab owner. This can be overridden by a HOME line in the user crontab.
This caused me problems when I tried to execute a MySQL backup script via run-parts that depended on ~/.my.cnf in the user's home directory. As a workaround, I modified the script to set the HOME environment variable rather than make a global change in /etc/crontab for all run-parts scripts.