我在 Windows Linux 子系统中遇到主机名解析问题,因此我删除了 /etc/hosts 并编写了新版本。该解决方案解决了我的问题,但每次重启后系统都会开始用某个默认版本覆盖 /etc/hosts,因此我需要一次又一次地设置主机。是否可以设置 Linux 子系统,以便它复制原始 Windows 主机文件或至少不删除已写入的文件?
答案1
sudo vim /etc/wsl.conf
添加以下两行:
[network]
generateHosts = False
参考:https://devblogs.microsoft.com/commandline/automatically-configuring-wsl/
答案2
我在 Windows 下使用 Ubuntu 16.04.5 LTS 作为 Linux 子系统。Ubuntu 下的 /etc/hosts 文件显示
#This file is automatically generated by WSL based on the Windows hosts file:
#%WINDIR%\System32\drivers\etc\hosts. Modifications to this file will be overwritten.
因此我只是改变了#%WINDIR%\System32\drivers\etc\hosts
一下。
答案3
您的问题在这里解决: https://github.com/Microsoft/BashOnWindows/issues/398
为了防止 WSL 在每次 bash 启动时自动生成 /etc/hosts 文件,需要删除 /etc/hosts 中的以下注释行:
# This file was automatically generated by WSL. To prevent automatic generation of this file, remove this line.
答案4
我必须chattr +i
对该文件进行上述操作,因为即使我按照说明将这两行添加到该文件后,该文件仍然不断被覆盖/etc/wsl.conf
。
注意 - 请记住您需要chattr -i
能够再次从任何地方编辑该文件。