我尝试以 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。