MobaXterm是否在不同的计算机登录名上不断更改DISPLAY的位置?

我正在将MobaXterm与WSL2用作终端和X客户端,并且MobaXterm似乎随机地更改了其DISPLAY变量时遇到了问题。在给定的计算机启动中,IP似乎保持不变,但每天(或可能每两天一次)都会发生变化。

我一直通过~/.bashrc在WSL2安装上设置DISPLAY(因此它是持久的),就像MobaXterm开始屏幕上告诉我的一样(通常类似192.168.1.Y:0.0,其中Y是不同的似乎有所变化的数字)。

当我更改DISPLAY时,一切都会正常进行,直到出现连接显示错误的一天,然后检查Y值/ DISPLAY位置是否已更改。同样,我可以检查MobaXterm在上方显示为“您的显示设置为...”的内容,并通过〜/ .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 documentation

默认情况下,MobaXterm Xserver侦听您所有的网络适配器。 标语消息将表明您的DISPLAY环境设置为“:0.0”,但这仅是参考消息:在此处打印该消息是为了帮助用户在连接到远程服务器时设置其“ DISPLAY”环境变量。但是,嵌入式X11服务器侦听所有网络接口,不仅侦听写入的网络接口。在“ DISPLAY”变量中看到哪个IP地址都没有关系:由于MobaXterm X服务器侦听您所有的网络接口,因此侦听第二,第三,(...)网络接口。例如,如果您的计算机有2个网络适配器(192.168.0.10和10.10.10.36):MobaXterm说您的DISPLAY设置为“ 192.168.0.10:0.0”。但是 X服务器确实侦听“ 127.0.0.1”(本地主机),“ 192.168.0.10:0.0”(第一个适配器)和“ 10.10.10.36:0.0”(第二个适配器)。

好吧,如果确实是“ X服务器确实在“ 127.0.0.1”(本地主机)上侦听”的情况,那么当DISPLAY(在WSL2发行版上)设置为{时,我的X应用程序不应正常启动{1}}还是127.0.0.1:0.0

sguidong 回答:MobaXterm是否在不同的计算机登录名上不断更改DISPLAY的位置?

WSL 1和WSL 2之间的主要区别是WSL 1在Windows环境中“运行”,而WSL 2作为虚拟计算机在Windows环境中运行。

WSL 1与主机Windows环境共享网络,而在WSL 2中,它拥有自己的网络。特殊IP地址127.0.0.1(localhost)始终指向您要连接的计算机。这就是为什么在WSL 1中127.0.0.1指向运行MobaXterm的Windows环境(因为它们是同一台机器),而在WSL 2中127.0.0.1指向没有MobaXterm运行的Linux环境(因为它是一个MobXterm)。不同的,尽管是虚拟的)。

您需要通过指定Windows机器的IP地址将WSL 2虚拟机指向Windows机器。该IP地址由Windows本身设置,MobaXterm无法控制它。因此,MobaXTerm唯一能做的就是从Windows获取IP地址并告诉用户它是什么。它本身不能将IP地址设置为静态。

在大多数情况下,您可以确保Windows具有静态IP地址。就我而言,MobaXTerm显示给我的IP地址是Windows计算机从我的WiFi路由器获取的IP地址。为了给它提供一个静态IP地址,我必须登录到路由器(在http://192.168.1.1上),并告诉它始终为Windows计算机分配相同的IP地址。对于每个路由器,执行此操作的确切方法不同,通常在“ DHCP”设置中的某个位置。

IP范围192.168。是一个本地网络,因此只有网络(您家中)的计算机可以访问它。从问题中的地址看来,您也可以在http://192.168.1.1上配置路由器。这是不同于我的192.168.1.1。

,

这里有类似的问题。我必须从横幅复制 DISPLAY IP 地址,并在每次更改时将其分配给 $DISPLAY

我想动态派生它,但在我的情况下,X 服务器没有侦听 Linux 知道的任何接口(与 MobaXterm 文档中的断言相反)。

它只监听 Wi-Fi 端口,表面上,Linux-WSL2 无法本地访问。

幸运的是,它确实可以访问 Windows 命令!所以为我解决它的解决方法是将以下内容添加到 .bashrc

export DISPLAY="$(netsh.exe interface ip show address "Wi-Fi"|awk '/IP Address/ {print $3}'|sed 's/\r//'):0"
本文链接:https://www.f2er.com/2410448.html

大家都在问