我使用 X11 在 WSL2 发行版中启动 GUI 应用程序。例如,下面是使用 xfce4-terminal 的方法:
wsl --distribution foo --user vect /bin/bash -l -c xfce4-terminal
DISPLAY
发行版中的 env 变量设置/etc/profile.d/
如下:
export DISPLAY="$(sed -n 's/nameserver\ //p' /etc/resolv.conf):0"
当只有一个发行版 GUI 应用程序从其启动时,它工作正常。如果我尝试从多个发行版启动 GUI 应用程序,事情会变得很奇怪。从withbar
克隆发行版,foo
我有以下内容:wsl --export ...
wsl --import ...
在 PowerShell 中
wsl --distribution foo --user vect /bin/bash -l -c xfce4-terminal
在 xfce4-terminal 中的 bash
$ echo $WSL_DISTRO_NAME
foo
在 PowerShell 中
wsl --distribution bar --user vect /bin/bash -l -c xfce4-terminal
在 xfce4-terminal 中的 bash
$ echo $WSL_DISTRO_NAME
foo
正如您在第二种情况下看到的那样,尽管已指定,但仍在xfce4-terminal
运行。foo
bar
同时bash
从PowerShell
它在正确的发行版中运行开始:
wsl --distribution bar --user vect
$ echo $WSL_DISTRO_NAME
bar
该问题与VcXsrv
和 一起重现Cygwin/X
。
我究竟做错了什么?如何从多个 WSL2 发行版中并行启动带有 X11 的 GUI 应用程序?