-
-
Save ThYpHo0n/349f1f6473e207b866f65aca4728da3e to your computer and use it in GitHub Desktop.
| # WSL? | |
| if [[ "$(< /proc/sys/kernel/osrelease)" == *microsoft* ]]; then | |
| export $(dbus-launch) | |
| export LIBGL_ALWAYS_INDIRECT=1 | |
| export WSL_VERSION=$(wsl.exe -l -v | grep -a '[*]' | sed 's/[^0-9]*//g') | |
| export WSL_HOST=$(tail -1 /etc/resolv.conf | cut -d' ' -f2) | |
| export DISPLAY=$WSL_HOST:0 | |
| # pip path if using --user | |
| export PATH=$PATH:$HOME/.local/bin | |
| # SSH | |
| eval $(/mnt/c/weasel-pageant/weasel-pageant -r) | |
| fi |
if /etc/resolve.conf can't get what you want, iproute2 util is another proper way to get the gateway address:
ip -o route get 1.1.1.1 | cut -d' ' -f 3
the 1.1.1.1 can be any address of foreign network, it just show how kernel visit that address.
export DISPLAY=$(ipconfig.exe | grep IPv4 | head -1 | rev | awk '{print $1}' | rev | tr -d '\r'):0.0
I used this approach but added a grep to extract just the Wi-Fi adapter because the IPv4 part was just fetching the first match so:
export DISPLAY=$(ipconfig.exe | grep -A 6 'Wireless LAN adapter Wi-Fi' | grep IPv4 | head -1 | rev | awk '{print $1}' | rev | tr -d '\r'):0.0
I came up with this: HOST_IP=$(route.exe print | grep "0.0.0.0 0.0.0.0" | awk '{print $4}')
I changed the routing inside my wsl as a workaround for my VPN software. So there is no way to get the Windows external IP on the linux side.
@jamesharris-
It may depend on how you installed WSL/WSL2 and perhaps your network layout. This works for me, because my Windows computer and my WSL2 VM both use an external DNS server:
export DISPLAY=$(ipconfig.exe | grep IPv4 | head -1 | rev | awk '{print $1}' | rev | tr -d '\r'):0.0Use
set -xfor debugging purposes. This way I found thatipconfig.exeprints an carriage return, which needs to be removed withtr -d '\r'Disable debug
set +xEdit: if the above fails, use