关于 DISPLAY 环境变量的问题

Posted

技术标签:

【中文标题】关于 DISPLAY 环境变量的问题【英文标题】:Questions about the DISPLAY env variable 【发布时间】:2022-01-13 07:20:32 【问题描述】:

最近,我体验了如何在 WSL2 上运行 GUI。关键部分是在主机上安装 X11 服务器,并在 WSL2 shell 中定义一个环境变量 DISPLAY,如export DISPLAY=172.19.224.1:0.0。这里,IP 172.19.224.1 是我的主机在 WSL2 中的 IP。而且这种方法也适用于 VM Linux 服务器的 shell。

我的问题如下:

为什么是:0.0?我觉得冒号后面应该是一个端口的整数,例如172.19.224.1:3306 用于mysql:0.0 是什么意思?

如果我在远程服务器的 shell 中使用 DISPLAY 环境变量,并且远程服务器通过 NAT 路由器看到我的 X11 服务器并且端口转发正在使用中。转发什么端口? (我正在尝试将 GUI 用于远程服务器,但我发现之间有一个 NAT 路由器,并且需要端口转发。)

我不知道主题的名称和要搜索的关键词。谁能给我一些线索?

【问题讨论】:

你为什么认为 MySQL 和 X11 会共享环境变量内容的格式? 我很抱歉。 @Jens,我想在我问这个问题之前我应该​​做更多的功课。我正在研究 Wikipedia 上有关 X Window System 的内容。我猜这个问题可能代表了像我这样的人的东西,而且中间删除它可能很奇怪,所以我不删除它。再次抱歉。 【参考方案1】:

DISPLAY 变量不包含端口号。第一个数字是显示编号,第二个数字是屏幕编号。所以:0.0 表示显示器编号 0 和屏幕编号 0。有关详细信息,请参阅Unix site。

【讨论】:

【参考方案2】:

为什么是 :0.0?

格式一般为<ip>:<display number>.<screen number>

要转发什么端口?

VNC 使用 5900 + 显示编号。

X11使用6000+显示数。

【讨论】:

非常感谢!我稍后会尝试。 我很抱歉迟到了。我最近尝试过,它有效。我通过 autossh 通过多个 NAT 路由器转发端口 6000,并成功使用 Windows 10 上的 VcXsrc 在 SSH 上显示 GUI 程序到服务器。非常感谢!

以上是关于关于 DISPLAY 环境变量的问题的主要内容,如果未能解决你的问题,请参考以下文章

linux环境变量display怎么设置

Visual Studio - X11:缺少 DISPLAY 环境变量

TclError:Google Colab 中没有显示名称和 $DISPLAY 环境变量

tkinter.TclError:没有显示名称,也没有 $DISPLAY 环境变量 python

markdown pyplot _tkinter.TclError:没有显示名称,没有$ DISPLAY环境变量

python Matplotlibで没有显示名称,没有$ DISPLAY环境变量が発生する