A opção preguiçosa
Se você quiser o caminho mais fácil, evite ter que descobrir qual variável de ambiente definir:
- Verifique se o seu script inclui o shebang
- Torne-o executável
-
Adicione o seguinte ao Startup Applications:
/bin/bash -c "sleep 15 && while true; do <path_to_your_script.sh> ; sleep 300; done"
Dash > Aplicativos de inicialização > Adicionar. Adicione o comando:
/bin/bash -c "sleep 15 && while true; do <path_to_your_script.sh> ; sleep 300; done"
Explicação
Se você executar o script em seu próprio ambiente (por exemplo, em uma janela de terminal ou em Aplicativos de inicialização), várias variáveis de ambiente serão definidas. No entanto, cron
executa seu script com um conjunto limitado de variáveis de ambiente.
Como seu script, sem dúvida, usa o comando gsettings
:
gsettings get org.gnome.desktop.background picture-uri <wallpaper>
para definir o papel de parede, quase certamente o comando irá quebrar quando for executado a partir de cron
.
A desvantagem da "solução preguiçosa" é puramente teórica. Um comando que dorme praticamente continuamente significa nada para o seu sistema.
Informação adicional; alternativamente
Lendo esta postagem e de experiências anteriores, tenho certeza de que a variável de ambiente DBUS_SESSION_BUS_ADDRESS
precisa ser definido.
Para fazer isso, adicione a seguinte seção no início do seu script (abaixo do shebang):
PID=$(pgrep gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
Então você deve conseguir executá-lo com sucesso a partir de cron
.
No entanto, você pode muito bem salvar a confusão e escolher a opção preguiçosa.