Você está certo de que os processos não devem ser capazes de espiar outros ambientes de processo. Isso é muito por design. Mas, export
empacotará seu ambiente para ser escolhido por outra coisa.
O que você pode fazer é algo assim em seu .bashrc:
[[ $DISPLAY ]] && export > ~/.cron_bread_crumbs/gonme_env
Em seguida, o seu cron pode simplesmente buscá-lo.
. /home/user/.cron_bread_crumbs/gnome_env
O arquivo estará cheio de linhas como esta:
declare -x ENV_VARIABLE="value"
Os valores serão, obviamente, citados. Foi o que eu quis dizer ao dizer "embalado com cuidado".
O fornecimento (chamando declare -x
, que é uma exportação) significa que todos os processos subseqüentes que são iniciados (e talvez desanexados) do cron pai também herdarão esses valores.
Isso é um pouco desajeitado, porque assume que você abriu um terminal do gnome fazendo com que os valores sejam atualizados antes do cron rodar. Um pouco de sanidade no cron job não deve ser muito difícil de adicionar, no entanto.
Sua outra opção é iniciar algo em segundo plano que bloqueia apenas enquanto despeja o ambiente em um canal nomeado e, em seguida, permite que o trabalho cron o obtenha a partir daí. De qualquer maneira, o kludge está em garantir que algo aconteça via terminal Gnome, para que o cron job receba as variáveis.