В настоящее время я устанавливаю ряд переменных среды в OS X в / etc / profile с помощью команды экспорта. Все они отображаются правильно, когда я проверяю терминал, однако, когда скрипт выполняется через cron, ни одна из этих переменных не устанавливается.
Насколько я понимаю, cron работает со своими собственными переменными среды, но как я могу добавить свои собственные переменные в среду cron?
Пожалуйста, объясните как можно проще, как вы, наверное, догадались, я мало что знаю об этом.
Спасибо Джек
В cron
Утилита работает в очень ограниченной среде. Это означает, что вы должны изложить вещи так, как если бы вы работали в интерактивном режиме в командной строке (например, /usr/bin/perl
а не просто perl
).
Также стоит сказать, что Apple рекомендует launchd
над cron
. (Я действительно использую cron
я на Mac, но только потому, что привык к этому с машин Linux. Я все еще хочу переключиться.)
в crontab
файл, вы можете указать переменные среды:
FOO=bar 0 * * * * echo $FOO
Вышеупомянутое должно повторяться "полосой" каждый час.
Я не проверял подробно, но на странице руководства bash объясняется (поиск по INVOCATION), что bash не читает / etc / profile, когда он не вызывается как логин или интерактивная оболочка.
Программа входа в систему всегда запускает оболочку как оболочку входа в систему, поэтому я предполагаю, что cron этого не делает, и оболочка не читает какие-либо файлы профиля (согласно странице руководства он будет читать файл, указанный в переменной ENV, когда оболочка была запущена, но cron похоже, нет возможности установить это).
Я обнаружил, что обычно проблематично полагаться на какие-либо глобальные настройки (например, PATH) в сценариях задания cron, поэтому я определяю свои собственные настройки в каждом сценарии.