我正在使用带有 WSL2 的 MobaXterm 作为终端和 X 客户端,并且我在 MobaXterm 看似随机更改其 DISPLAY 变量时遇到问题。在给定的计算机启动时,IP 似乎保持不变,但每天都在变化(或者可能每隔几天?)。
我一直在通过~/.bashrc(因此它是持久的)在我的 WSL2 安装上设置 DISPLAY,就像在 MobaXterm 开始屏幕上告诉我的那样(通常类似于192.168.1.Y:0.0,其中 Y 是一个似乎会改变的不同数字)。
当我更改 DISPLAY 时,一切正常,直到有一天我收到连接显示的错误,然后我检查 Y 值/DISPLAY 位置是否已更改。同样,我可以检查 MobaXterm 上面显示的内容为“您的 DISPLAY 设置为 ...”,并通过 ~/.bashrc 手动更改它,但我希望设置一次并让它正常工作。
我使用 MobaXterm 的同事似乎将他们的 DISPLAY 始终设置为“localhost”之类的东西,但我的似乎每次都显示某种完整的 IP 地址(这种情况会发生变化)。
有没有人熟悉这个问题,和/或对如何解决这个问题有任何想法?
从我的 WSL2 发行版上的 MobaXterm bash 终端添加一个示例:
$ xeyes
Error: Can't open display: 127.0.0.1:0.0
$ export DISPLAY=localhost:0.0
$ xeyes
Error: Can't open display: localhost:0.0
$ export DISPLAY=:0.0
$ xeyes
Error: Can't open display: :0.0
一旦我设置export DISPLAY=192.168.1.13:0.0(这就是 MobaXterm 所说的 DISPLAY 现在设置为),xeyes显示正常。
有人还把我带到了MobaXterm 文档:
默认情况下,MobaXterm Xserver 侦听您的所有网络适配器。横幅消息会说您的 DISPLAY 环境设置为“:0.0”,但这只是一条信息性消息:它被打印在这里是为了帮助用户在连接到远程服务器时设置他们的“DISPLAY”环境变量。但是,嵌入式 X11 服务器侦听所有网络接口,而不仅仅是写入的那个。您在“DISPLAY”变量中看到哪个 IP 地址并不重要:因为 MobaXterm X 服务器侦听您的所有网络接口,它也监听第 2、3、(...) 个网络接口。例如,如果您的计算机有 2 个网络适配器(192.168.0.10 和 10.10.10.36): MobaXterm 说您的 DISPLAY 设置为“192.168.0.10:0.0”。但是X 服务器确实在“127.0.0.、“192.168.0.10:0.0”(第一个适配器)和“10.10.10.36:0.0”(第二个适配器)。
好吧,如果确实是“X 服务器真的在“127.0.0.1”(本地主机)上侦听,那么当 DISPLAY(在 WSL2 发行版上)设置为127.0.0.1:0.0或时,我的 X 应用程序不应该正确启动localhost:0.0吗?