I have a crontab running every hour. The user running it has environment variabless in the .bash_profile that work when the user runs the job from the terminal,
.bash_profile
Instead of
0 * * * * sh /my/script.sh
Use bash -l -c
0 * * * * bash -l -c 'sh /my/script.sh'