У меня были проблемы с разрешением имен хостов в Linux-подсистеме Windows, поэтому я удалил /etc /hosts и написал новую версию. Это решение решило мою проблему, но после каждой перезагрузки система начинала переопределять /etc /hosts какой-то версией по умолчанию, поэтому мне нужно снова и снова настраивать хосты. Можно ли настроить подсистему Linux, чтобы она копировала исходный файл хостов Windows или, по крайней мере, не удаляла уже записанный файл?
3 ответа
У меня не было строки, говорящей: To prevent automatic generation of this file, remove this line.
в моем /etc /hosts.
В итоге я создал скрипт addHosts.sh со следующим содержимым:
MYHOSTS="ip1\thostname1\nip2\thostname2"
grep hostname1 /etc/hosts >> /dev/null || echo $MYHOSTS | sudo tee -a /etc/hosts >> /dev/null
Grep предотвращает добавление записей несколько раз, если вы открываете отдельные экземпляры вашего дистрибутива Linux.
После этого вам нужно добавить sudo addHosts.sh
в ваш bashrc и (необязательно) создать исключение для запроса пароля sudo для этого скрипта в /etc /sudoers:
user ALL = (root) NOPASSWD: /path/to/addHosts.sh
Ваша проблема решена здесь:https://github.com/Microsoft/BashOnWindows/issues/398
Чтобы запретить WSL автоматически генерировать файл /etc /hosts при каждом запуске bash, вам необходимо удалить следующую строку комментария в /etc /hosts:
# This file was automatically generated by WSL. To prevent automatic generation of this file, remove this line.
Я использую Ubuntu 16.04.5 LTS в качестве подсистемы Linux под Windows. Мой файл /etc /hosts под Ubuntu говорит
#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
вместо этого.