当可执行文件作为 sudo 运行而不是失败时,有没有办法以编程方式设置 DISPLAY?

当可执行文件作为 sudo 运行而不是失败时,有没有办法以编程方式设置 DISPLAY?

当我在 Linux (Ubuntu) 上使用 sudo 命令从终端运行任何 GUI 应用程序时,应用程序失败并出现 QT 错误,如下所示。

sudo 上的 QT 应用程序

几乎每个应用程序在尝试时都会失败;这是 Firefox 的示例

火狐浏览器 sudo

由于 sudo/root 默认情况下没有 DISPLAY,因此在设置显示时可以参考:以另一个(非 root)用户身份运行 GUI 应用程序

是否可以识别应用程序没有显示并以编程方式设置它?

答案1

你只需sudo告诉向前将现有的环境变量添加到它作为 root 生成的进程中。请参阅--preserve-env=list中的选项man sudo

另外,firefox以 root 身份运行,不问任何问题,非常严厉

不,不要那样做。

绝对没有理由以 root 身份运行浏览器,无论你想用这种方式解决什么问题必须可以用不同的方式解决。

对于cmake和 也同样如此cmake-gui。软件不应该以 root 身份构建,如果您必须成为 root 才能构建它,则说明出现了问题。即使你以root身份构建软件(你不需要,但有些软件写得很糟糕),你不要必须以 rootcmake身份运行cmake-gui

因此,sudo 的不良用例。

相关内容