Bem, antes de tudo, você está matando o programa errado. Seu script tem sudo killall dockey &
, mas você quer matar docky
, não dockey
. Dito isto, não há absolutamente nenhuma razão para que sudo
, docky
tenha sido iniciado por seu usuário para que você possa eliminá-lo sem privilégios especiais. Você também não precisa enviá-lo para o segundo plano (isso é o que o &
faz).
Você não explicou por que seu roteiro não funciona, mas o que provavelmente está acontecendo é que você o executa e não vê nada acontecendo (por favor, explique sempre quais são os sintomas ao fazer perguntas). Isso porque você está enviando o comando sudo ...
para o plano de fundo com &
. sudo
espera uma senha:
$ sudo ls
[sudo] password for terdon:
Assim, quando você executá-lo, ele fornecerá uma solicitação solicitando uma senha. Como você o está executando em segundo plano, nunca verá esse prompt e o script ficará parado, esperando que você responda.
Eu não uso docky
e não tenho idéia se você pode fazer isso sem reiniciá-lo, mas reiniciar parece ser a opção mais simples. Basta alterar seu script para:
#!/bin/bash
gconftool-2 --get /apps/docky-2/Docky/Interface/DockPreferences/Dock1/Autohide | grep -q None &&
gconftool-2 -t string -s /apps/docky-2/Docky/Interface/DockPreferences/Dock1/Autohide "Intellihide" ||
gconftool-2 -t string -s /apps/docky-2/Docky/Interface/DockPreferences/Dock1/Autohide "None"
killall docky && docky
O &&
significa AND
, em outras palavras, "execute o próximo comando somente se o anterior tiver sido bem-sucedido". O ||
( OR
) é o oposto, "execute o próximo comando se o anterior falhar. Portanto, o script acima consultará primeiro gconf
para o estado atual de Autohide
. O grep
somente ser bem-sucedido se corresponder a None
. Se estiver, ele será definido como Intellihide
e, caso contrário, será definido como None
Observe que &&
não é o mesmo que &
. O &
envia comandos para o segundo plano, conforme descrito acima, e não é necessário, a menos que você queira enviar algo para o segundo plano. Para obter mais detalhes sobre os vários operadores de shell, consulte aqui .