Você precisa definir a variável de exibição, mas isso é feito como:
#!/bin/bash
export DISPLAY=":0"
gedit
e depois
at now + 1 minute -f test.sh
funciona para mim em Ubuntu 14.04.1 LTS
Estou aprendendo sobre os comandos de programação do Linux, incluindo at
, cron
, sleep
etc. Estou tentando iniciar gedit
após x minutos por meio do comando at
. Isso é o que eu tenho:
kedar@i5 ~ $ at now + 1 minute
at now + 1 minute
warning: commands will be executed using /bin/sh
at> ./s.sh
at> <EOT>
job 18 at Fri Aug 15 13:21:00 2014
O conteúdo de s.sh (-rwxr - r--):
#!/bin/sh
#set $DISPLAY=:0
echo "Created on" 'date' >t.txt
gedit #(also tried /usr/bin/gedit and 'gedit' and systen(/usr/bin/gedit))
Após 1 minuto, o t.txt é criado com o conteúdo esperado. No entanto, gedit
não é lançado. Aliás, nenhum dos meus programas ( firefox
, xcalc
, xfce4-terminal
etc) pode ser lançado desta forma via at
.
O mais estranho é que, quando executo ./s.sh
no bash, gedit
se abre bem.
Também tentei executar at
(de um arquivo - se isso estiver correto) como:
kedar@i5 ~ $ at now + 1 minute -f ./s.sh
Eu acho que há algo errado com a maneira como estou usando at
com o script de shell. Também não posso usar at
sem um script de shell? Obrigado.
Tags x11 shell at shell-script