O problema parece vir do ambiente um pouco higienizado no qual o comando sudo
é executado.
Embora os comandos estivessem sendo executados como o usuário ubuntu
, o ambiente não continha o complemento total de variáveis env
normalmente presentes ao usar um terminal / shell interativo.
gconftool-2
parece precisar de acesso ao DBUS_SESSION_BUS_ADDRESS
variable. Nesse caso, consegui passar um valor que copiei de outro terminal que estava executando. Mas se o script fosse executado em outra máquina, talvez fosse necessário buscá-lo dinamicamente, caso em que algo como o script abaixo seria necessário.
# Grab the DBUS_SESSION_BUS_ADDRESS variable from nautilus's environment
eval $(tr '# Grab the DBUS_SESSION_BUS_ADDRESS variable from nautilus's environment
eval $(tr '%pre%' '\n' < /proc/$nautilus_pid/environ | grep '^DBUS_SESSION_BUS_ADDRESS=')
# Check that we actually found it
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then
#echo "Failed to find bus address" >&2
exit 1
fi
# export it so that child processes will inherit it
export DBUS_SESSION_BUS_ADDRESS
' '\n' < /proc/$nautilus_pid/environ | grep '^DBUS_SESSION_BUS_ADDRESS=')
# Check that we actually found it
if [ -z "$DBUS_SESSION_BUS_ADDRESS" ]; then
#echo "Failed to find bus address" >&2
exit 1
fi
# export it so that child processes will inherit it
export DBUS_SESSION_BUS_ADDRESS
Além disso, mais informações podem ser obtidas se você google - gconftool-2 dbus_session_bus_address , já que isso parece ser um problema comum.