特定のgsettingsを設定するスクリプトを作成しています。スクリプトがユーザーとして実行されている場合、期待どおりに機能します。しかし、何らかの理由で、Sudoで作業するためにスクリプトが必要です。
私が見つけた1つの解決策は、Sudo -u <username> -H ./script
を使用してユーザー空間で実行することでした。エラーなしで実行されていますが、ユーザー空間で変更が行われていません。
ここで何が欠けているのか理解できません。 Sudo -u <currentUser> -H bach -c `echo " $USER $UID"`
を実行すると、期待どおりに機能し、ユーザーに値を提供します。
ここの問題は何でしょうか?
前もって感謝します!
その理由は、gsettingsコマンドの前でdbus-launch
を使用していないためです。
man dbus-launch
を参照
Sudo -Hu user gsettings set org.gnome.desktop.background picture-uri ''
を実行すると、エラーが発生します
administrator@pratap:~/Music$ Sudo -Hu user gsettings set org.gnome.desktop.background picture-uri ''
(process:11889): dconf-WARNING **: 18:54:53.409: failed to commit changes to dconf: Error spawning command line “dbus-launch --autolaunch=454398a8b6e94accb53d9b7e5361faaa --binary-syntax --close-stderr”: Child process exited with code 1
administrator@pratap:~/Music$