尝试以 root 身份运行 nautilus 时出现“错误:环境中未设置 XDG_RUNTIME_DIR。”

尝试以 root 身份运行 nautilus 时出现“错误:环境中未设置 XDG_RUNTIME_DIR。”

我尝试以 root 身份运行 nautilus,但是当我从终端运行“sudo nautilus”时,出现以下错误:

错误:环境中未设置 XDG_RUNTIME_DIR。

(nautilus:9341): Gtk-警告**: 无法打开显示:

当我尝试以非 root 身份运行 nautilus 时,不会出现此问题。我使用的是 ubuntu 14.04。有人知道我该如何修复此问题吗?

答案1

当您以另一个用户身份运行软件时,您实际上是在启动一个新的最小隔离环境,该环境不会承载某些“过多”变量(包括负责注入库或设置权限的其他变量)。将您的sudo nautilus调用替换为以下内容 - 它将承载当前会话中用户特定的 X 服务器设置:

pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY nautilus

这是一个一次性的低级解决方案,但它可以在配置错误的机器上工作。如果你想永久地“修复你的sudo”,你需要找到你的环境配置问题并按照其他答案中所述进行更正。

答案2

如果你在 Docker 中遇到此错误,我是这样做的

# sudo xhost +
access control disabled, clients can connect from any host
# export DISPLAY=:0.0
# docker run -it --env DISPLAY=unix$DISPLAY --privileged  --volume /tmp/.X11-unix:/tmp/.X11-unix .. rest of your Docker arugments

答案3

为了简单起见 - 更多地解释我的系统的新启动。

经过所有的解释后,我得到了结果 - 并且终端中的“env”已经表明这对于这些会话来说是正确的:

这两行使用环境变量:
对于 tmp 行为我选择了:

mkdir -pv ~/.cache/xdgr

设置环境变量:

export XDG_RUNTIME_DIR=$PATH:~/.cache/xdgr

关闭终端并重新打开环境后,它们会告诉:

XDG_RUNTIME_DIR=/run/user/1001

注意:对于 ubuntu 下的用户来说没问题,root 需要更多(term 的最新信息 - 具有 0700 权限)

答案4

开始使用 sh 命令而不是 bash。

相关内容