A cron
можно рассматривать как отдельного пользователя.Таким образом, этот «пользователь» не может «видеть» или «читать» те же файлы, что и вы.Таким образом, важно, чтобы все имена путей и т. Д. Были определены в абсолюте.
Каждый скрипт выполняется в своем собственном процессе.Поэтому, когда вы запускаете скрипт, вы можете изменить $SHELL
и любую другую переменную внутри, но она будет потеряна, как только вы выйдете из нее.Я предполагаю, что вычисление переменной $INDEX
, возможно, было успешно вычислено в сценарии, но его использование вне сценария могло быть неудачным.Без дополнительной информации о том, что это была за работа или что вы хотели сделать, трудно сказать.
Существует два способа запуска задания cron:
- Как пользователь root,вы можете запустить
su -user -c < job >
в root crontab
. - Поиск вашего профиля явно, как вы сделали.
- Вы также можете установить переменные окружения в crontab.
- Как пользователь в пользовательском crontab, вы можете запустить его так:
"/home/blah/.profile && myScript"
Тем не менееВ ваших переменных окружения ДОЛЖНО быть что-то (кроме расширений файлов), чего нет при запуске задания cron.Вам нужно будет выполнить этот скрипт с -x flag (in bash)
и затем изучить выходной файл.Использование diff
между переменными окружения и root/cron
может быть указателем.Также проверьте, есть ли в ваших скриптах утилиты, чьи местоположения не являются частью переменной $PATH
для cron / root.