我正在编写一个脚本来设置一些特定的 gsettings。如果以用户身份执行该脚本,它会按预期工作。但是,由于某种原因,我需要我的脚本与 sudo 一起工作。
我发现的一个解决方案是sudo -u <username> -H ./script
在用户空间中运行它。它执行时没有任何错误,但我的更改没有在用户空间中生效。
我不明白我在这里遗漏了什么。当我运行时,sudo -u <currentUser> -H bach -c `echo " $USER $UID"`
它按预期工作并向用户提供值。
这可能是什么问题?
提前致谢!
答案1
原因是您没有使用dbus-launch
gsettings 命令。
看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$