Jobs run through cron
aren't run in the same runtime environment that you have on your desktop. None of your PATH
changes, or other environment variable settings from ~/.bashrc
are automatically propagated to your cron
job. For example, there's no $DISPLAY
, so GUI programs need special treatment (read man xhost
).
One can set environment variables for all one's cron
jobs in the crontab
file
Read man 5 crontab
.
Look at the results of echo "=== id ===";id;echo "=== set ===";set;echo "=== env ===";env | sort;echo "=== alias ===";alias
in each of your environments.
Since the command
part of the crontab
line is, by default, interpreted by /bin/sh
, which has a simpler syntax than /bin/bash
, I recommend having command
be a call to a bash
script (executable, mounted, starts with #!/bin/bash
) which sets up the environment, then calls the desired program.
root@localhost
or somesuch). But to have any hope of answering this, you'll need to provide much more detail - how does your script send email? what MTA are you using, and how is it configured (particularly any reverse aliases)? Whose crontab are you running the script from?