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