Безопасное редактирование .bashrc в WSL

Безопасное редактирование .bashrc в WSL

Как безопасно редактировать .bashrcфайл в подсистеме Windows для Linux?

Эта статьяпредупреждает о том, что никогда не следует редактировать файлы, хранящиеся в папке WSL, AppDataс помощью инструментов Windows.

.bashrcНо как же тогда безопасно редактировать файлы ?

решение1

Используйте встроенный nanoредактор как:

nano ~/.bashrc

Наиболее важными сочетаниями клавиш nanoявляются Ctrl+ Oдля сохранения файла и Ctrl+ Xдля закрытия редактора.

Простое руководство по использованию nanoможно найти вGentoo Linux Вики.

решение2

Я думаюКод Visual Studioотлично работает. Просто установитеУдалённо - WSLрасширение.

Чтобы использовать его, просто откройте cmd и введите bash. bashВведите cd, затем используйте code .bashrc.

Вуаля! VS Code открывается в WSL, и вы можете редактировать нужные вам файлы.

решение3

Извините, что добавляю еще один ответ, но сам вопрос (вместе со всеми остальными ответами здесь) нуждается вконтекстэтого не хватает любому, кто приходит и пытается это понять.

Предупреждение Microsoft, ссылка на которое приведена в исходном вопросе, относится к редактированию файлов WSL1.через Windowsиспользуя путь Windows %AppData%. В WSL версии 1 (но не версии 2) WSL хранил всю файловую систему для экземпляра Linux в папке Windows. Эти файлы, хотя и видны пользователю в Windows, не должны редактироваться в Windows. Как говорится в предупреждении, повреждение экземпляра WSL вероятно, если не принять во внимание.

В WSL версии 2 это не проблема. Поскольку файловая система хранится на виртуальном диске, редактировать файловую систему напрямую в любом случае невозможно.

Однако в любой из версий этоявляетсябезопасно редактировать файлы (включая ~/.bashrc)внутриэкземпляр WSL. Там это просто обычный файл в файловой системе WSL. Два ответа от 2019 года (BeastOfCaerbannog'sиWinEunuuchs2Unix's) используют этот подход. Ничего плохого в этом нет — оба ответа правильные. Хотя я бы сказал, что установка Windows X Server и geditпросто редактирование файла WSL, вероятно, излишество. Можно было бы привести практически любой другой редактор (кто-нибудь хочет добавить ответ по Emacs для полноты? ;-)).

TheОтвет 2020 года от Brixton Mavu, в котором упоминается использование VSCode, также является вариацией той же идеи. Несмотря на то, что он использует инструмент Windows, VSCode запускает сервер внутри экземпляра WSL, с которым он взаимодействует, чтобы разрешить редактирование, просмотр и даже отладку экземпляра WSL.

А потом естьНедавний ответ @Jon(что подняло этот вопрос, и поэтому я его увидел). Это (в основном) правильный ответ на вопрос о том, как безопасно редактировать файлы WSL изнутри Windows, а не изнутри экземпляра WSL. Хотя на самом деле это уже упоминалось в записи блога Microsoft, ссылка на которую была в исходном вопросе.

Я говорю "в основном", потому что вам следует, в общем, избегать использования инструментов Windows для редактирования файлов Linux, поскольку многие редакторы Windows по умолчанию используют окончания строк DOS/Windows, что ~/.bashrcтакже приведет к сбою. Некоторые инструменты достаточно умны, чтобы распознать, что существующий файл является файлом Linux, некоторые инструменты - нет, но большинство инструментов по умолчанию используют CRLF (DOS/Windows) при отсутствии любого другого формата.

Если экземпляр WSL не запускается из-за ошибки в ~/.bashrc, то ваммогвоспользуйтесь предложением @Jon по \\wsl$\редактированию, но есть и другие (на мой взгляд), более безопасные альтернативы.

Чтобы изменить ситуацию ~/.bashrc, когда этот файл препятствует запуску, выполните:

wsl -e bash --norc -c "vi ~/.bashrc"

или

wsl ~ -e bash --norc
vi .bashrc

Это запустится bashбез использования существующего ~/.bashrc.

Другие альтернативы включают запуск сеанса от имени пользователя root:

wsl -u root

А затем внесите необходимые изменения.

В целом, WSL имеет несколько удивительных механизмов восстановления посредством использования wslаргументов команды для запуска экземпляра.

решение4

Если вы предпочитаете графический редактор, то установите его, VcXsrvкак описано здесь:

Тогда используйтеgedit ~/.bashrc

Связанный контент