Важно понимать «login shell» и «интерактивная оболочка», что они означают.
С помощью ОС начались сценарии оболочки, а задания cron не соответствуют указанному выше способу для запуска оболочки. Поэтому никаких системных сценариев (.bashrc) или профилей пользователей не выполняется. Это означает, что наша переменная PATH не инициализируется. Команды оболочки не могли найти, потому что переменная PATH не указывает на нужные места.
Это объясняет, почему ваш скрипт работает успешно, если вы запускаете его вручную, но не удается, когда вы запускаете его через crontab.
Решение-1: Используйте абсолютный путь для каждой команды оболочки вместо имени команды, используемой в вашем файле сценария.
Решение-2: Инициализировать переменные среды и особенно переменную PATH до выполнение сценариев оболочки!