O problema é que o script depende da variável ambiental TERM
que está sendo configurada. O Ubuntu Unity Desktop não tem isso inicializado quando os scripts são chamados. Se você abrir um terminal com Ctrl + Alt + T , a variável será configurada.
Para testar seu sistema, crie um pequeno script chamado test-term.sh
e faça com que pareça:
#!/bin/bash
#See if $TERM has been set when called from Desktop shortcut
echo TERM environment variable: $TERM > ~/Downloads/test-term.txt
echo "Using env | grep TERM output below:" >> ~/Downloads/test-term.txt
env | grep TERM >> ~/Downloads/test-term.txt
exit 0
Crie um link no Nautilus para test-term.sh
e execute o link. Em seguida, verifique o arquivo de saída:
$ cat ~/Downloads/test-term.txt
TERM environment variable: dumb
Using env | grep TERM output below:
(... blank line appears here ...)
Como você pode ver, a variável de ambiente TERM
está em branco quando o comando env | grep TERM
é usado. Além disso, a variável $TERM
está configurada para dumb
, o que não combina muito bem com o comando dialog
baseado em cores, suportado pelo mouse.
Solução clichê
A solução de curto prazo foi incluir código clichê no topo dos dois scripts em questão:
# $TERM variable may be missing when called via desktop shortcut
CurrentTERM=$(env | grep TERM)
if [[ $CurrentTERM == "" ]] ; then
notify-send --urgency=critical "$0 cannot be run from GUI without TERM environment variable."
exit 1
fi