4

У меня были проблемы с разрешением имен хостов в Linux-подсистеме Windows, поэтому я удалил /etc /hosts и написал новую версию. Это решение решило мою проблему, но после каждой перезагрузки система начинала переопределять /etc /hosts какой-то версией по умолчанию, поэтому мне нужно снова и снова настраивать хосты. Можно ли настроить подсистему Linux, чтобы она копировала исходный файл хостов Windows или, по крайней мере, не удаляла уже записанный файл?

3 ответа3

2

У меня не было строки, говорящей: 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

1

Ваша проблема решена здесь: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.
0

Я использую 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 вместо этого.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .