wsl无法链接xfce4,报错xrdb: Connection refusedxrdb: Can‘t open display的解决方案与问题分析

先说解决方法,造成这种问题的原因我会在下半部分说明

打开powershell或cmd,输入ipconfig,找到"无线局域网落适配器",一定看清楚,是无线局域网络适配器,记住/复制ipv4那一行IP地址

打开wsl,输入sudo vim ~/.bashrc 在最下面加上/更改export DISPLAY=(你刚才复制/记住的IP):0.0

(记得加上:0.0)

然后执行

source ~/.bashrc

已经迫不及待了(喜),直接启动(我超,元)

产生这种问题的原因

相信你一定用某种手段使用了代理,并且在.wslconfig中应用了

networkingMode=mirrored

即打开了镜像模式

对,问题就出在这里,让我们从头开始梳理

在默认情况下,wsl的网络模式是net模式,在这种模式下你在cmd中输入ipconfig会看到以太网适配器 vEthernet (WSL (Hyper-V firewall)),于是直接在~/.bashrc中应用export DISPLAY=xxx(那里面的ip地址)就可以,不会出现任何问题

但是!一旦你使用了镜像网络,这个适配器就失效了(其实我也不确定是不是真的失效了,总之是没有用了),但是在你输入ipconfig的时候,这个适配器依然会被显示出来,除非重启电脑它才会消失。

而取而代之的是无线局域网适配器 WLAN,也就是说你要将export DISPLAY=后面的IP地址改成它的IPV4地址

当然还有小伙伴会有疑问,holy cow?wtf?

我使用的是

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0.0

啊!我从 /etc/resolv.conf 文件中提取所有 DNS 服务器的 IP 地址的功能呢,怎么不好使啊,我少的功能这块谁给我补啊?阿米诺斯!

莫急,你可以使用这个功能来做个实验,你会发现你获取的是默认网关地址(其充当局域网(LAN)和外部网络(如互联网)之间的中介)而不是ipv4地址(悲

这个问题真的是困扰了我几个小时,我翻遍了github和stackoverflow等社区都没有找到解决办法,直到我重启电脑并且观察ipconfig,发现vEthernet 没了的那一刻才有了解决这个问题的头绪,还是得加强网络方面的知识啊。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值