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 .