确保win系统上的hosts文件的访问权限已经设置成功了。
打开wsl系统 输入命令:
vim /opt/domain/domain.sh
输入以下内容保存:
#!/usr/bin/bash
# 为 win 设置 wsl host
# win hosts 文件路径
win_hosts_path="/mnt/c/Windows/System32/drivers/etc/hosts"
# 为 wsl2 设置的域名
wsl_domain="jimtse.cn mslula.cn stema.cn uglam.cn"
# 获取 wsl2 的 ip
wsl_ip=$(ifconfig eth0 | grep -w inet | awk '{print $2}')
# 判断是否已存在 wsl2 的域名,如果存在则修改,否则追加
if grep -wq "$wsl_domain" $win_hosts_path
then
# 此处因为权限问题没有直接用 sed 修改 hosts 文件
win_hosts=$(sed -s "s/.* $wsl_domain/$wsl_ip $wsl_domain/g" $win_hosts_path)
echo "$win_hosts" > $win_hosts_path
else
echo "$wsl_ip $wsl_domain" >> $win_hosts_path
fi
# 为 wsl 设置 win host
wsl_hosts_path="/etc/hosts"
win_domain="win"
win_ip=$(cat /etc/resolv.conf | grep "nameserver" | awk '{print $2}')
if grep -wq "$win_domain" $wsl_hosts_path
then
wsl_hosts=$(sed -s "s/.* $win_domain/$win_ip $win_domain/g" $wsl_hosts_path)
echo $wsl_hosts > $wsl_hosts_path
else
echo "$win_ip $win_domain" >> $wsl_hosts_path
fi
resolv_domain="jimtse.cn mslula.cn uglam.cn stema.cn"
if grep -wq "$resolv_domain" $wsl_hosts_path
then
wsl_hosts=$(sed -s "s/.* $resolv_domain/$wsl_ip $resolv_domain/g" $wsl_hosts_path)
echo $wsl_hosts > $wsl_hosts_path
else
echo "$wsl_ip $resolv_domain" >> $wsl_hosts_path
fi
给domain.sh添加执行权限并运行
chmod +x domain.sh
./domain.sh
domain.sh 脚本设置开机自启
sudo cp /opt/domain/domain.sh /etc/profile.d/