На этот вопрос уже есть ответ здесь:
У меня есть запись в cron.d:
31 17 * * * root /home/some_user/.bash_profile; /home/some_user/bin/some_script
Профиль устанавливает конкретный путь, и я повторяю текущий путь в профиле, чтобы убедиться, что он правильный. { {1}} Но когда сценарий выполняется, команда в нем не выполняется, потому что он не находится в PATH, и, когда я показываю текущий PATH в сценарии, это не то, что было установлено в профиле.
Почему PATH, установленный в профиле, не сохраняется при выполнении сценария?
Чтобы установить нужные переменные среды, вам необходимо получить файл .bash_profile
с . /home/some_user/.bash_profile
. В вашем случае вы выполняете файл bash_profile, который в основном выполнит этот файл и выйдет из оболочки. При следующем запуске some_script он запустится со свежими переменными среды. Проверьте эту ссылку - источник или выполнение
Другой вариант - установить переменную среды PATH
в верхней части файла crontab. Таким образом, это будет видно остальным скриптам.