“无法打开显示`(null)’”错误。 我怎样才能解决这个问题?
我正在尝试运行一个appliaction,但是当我运行它时,我得到一个
Could not open display `(null').
错误。 为什么是这样? 具体来说,我试图运行scratch(我通过aws安装):
root@ip-10-251-56-90:/usr/bin# ./scratch Executing: /usr/lib/squeak/4.4.7-2357/squeakvm -encoding UTF-8 -vm-display-x11 -xshm -plugins /usr/lib/scratch/plugins/:/usr/lib/squeak/4.4.7-2357/ -vm-sound-ALSA /usr/share/scratch/Scratch.image Could not open display `(null)'.
这样的错误意味着您正在运行需要图形显示的程序而且找不到它。 GUI程序连接到$DISPLAY
环境变量定义的$DISPLAY
。 错误的一般格式是
Could not open display $DISPLAY
因为,在您的情况下,错误说(null)
,这意味着没有设置$DISPLAY
。 因此,您需要:
-
如果使用
ssh
东西ssh
远程计算机,则需要导出本地计算机的$DISPLAY
并告诉远程计算机在那里显示GUI程序。 这可以使用ssh
的-X
或-Y
选项完成:ssh -Y root@10.251.56.90
正如
man ssh
所解释的那样:-Y Enables trusted X11 forwarding. Trusted X11 forwardings are not subjected to the X11 SECURITY extension controls. -X Enables X11 forwarding. This can also be specified on a per-host basis in a configuration file.
-
如果这是您的本地计算机,则需要安装图形环境 。 如果已经安装了一个,假设默认的Ubuntu设置,您可以使用以下命令启动它:
sudo service lightdm start
-
如果您运行的图形环境无论出于何种原因,
$DISPLAY
设置为null
,您可以重新定义它。 细节将取决于您的实际情况,但在大多数情况下,您需要的是(假设您再次使用本地计算机)export DISPLAY=:0.0
然后,您可以正常运行GUI程序。
-
如果你有一台X服务器正在运行但已切换到tty(例如按Ctrl + Alt + F1 ),则可能只需要返回到图形环境。 这取决于您的GUI运行的虚拟控制台,但在大多数情况下,Ubuntu将为7,因此您可以使用Alt + F7返回它。
如果这不会让您回到桌面,只需循环浏览所有ttys Alt + 向左箭头或Alt + 向右箭头,直到找到合适的箭头 。
-
另一个常见问题是您已经以普通用户身份启动了X会话,现在正尝试以
root
或其他用户身份连接到该会话。 要启用此function,您需要指定此用户有权访问您的图形桌面。 例如:xhost +si:localuser:terdon
这将允许本地用户
terdon
连接到正在运行的X服务器。 该命令需要由X会话的所有者运行。 或者,允许任何人连接:xhost +
并撤销权限:
xhost -