Чтобы установить переменную окружения DISPLAY, я бы поместил ее непосредственно в crontab. Кроме того, я бы сделал исполняемый скрипт и дал бы ему правильный заголовок (#!/usr/bin/env python
), чтобы он мог выполняться напрямую. Кроме того, вы можете положиться на то, что PWD будет установлен на HOME при запуске crontab.
Мой crontab будет выглядеть так:
DISPLAY=:0.0
* * * * * bin/change-background.py
Вы также можете установить PATH (так же, как DISPLAY), чтобы bin/
даже не был необходим.
Основная проблема при настройке окружения в crontab заключается в том, что значения не с переменной интерполяцией. Например, это не даст ожидаемых результатов:
PATH=$HOME/bin:$PATH