Исправление ошибки ввода / вывода из .bashrc в подсистеме Windows для Linux

5

Я по ошибке отредактировал .bashrcфайл для моего WSL (Windows Subsystem for Linux) Bash с помощью текстового редактора Windows (Notepad ++).

Теперь, когда я запускаю Bash, я получаю следующую ошибку:

bash: /root/.bashrc: ошибка ввода / вывода

Как я могу это исправить? Я попытался сохранить с окончаниями файлов Linux (только LF), но это не сработало.

Urig
источник
Мне любопытно, как именно ты сломал это, потому что я не могу воспроизвести его (несмотря на то, что это известная плохая идея). Кроме того, какую версию Windows вы используете? 1703? 1709? Старшая? Моя общая идея по исправлению и сохранению содержимого файла (в общем виде) состояла в том, чтобы прочитать его на стороне Windows, base64 и записать обратно на стороне WSL. Не проверено, пока я не смогу воспроизвести проблему ...
Боб
Я открыл его в NotePad ++, прокомментировал 3 строки в конце и сохранил. Этого было достаточно, чтобы испортить его. Не вносил никаких преднамеренных изменений в EOL или кодировку.
Urig

Ответы:

4

Как я могу это исправить? Я попытался сохранить с окончаниями файлов Linux (только LF), но это не сработало.

Есть несколько решений:

Используйте приложение Linux / Ubuntu для изменения файлов этих файлов (vim, emacs, nano и т. Д.).

Один человек сказал, что редактирование nanoи повторное сохранение файла устранило проблему.

Если это не сработает, вы можете попробовать ядерный вариант переустановки:

В моем случае ничего не починено. Я использовал следующую команду, чтобы удалить BashOnWindows, а затем переустановить его:

lxrun /uninstall /full

lxrun /install /y

Исходная команда bash не работает для меня после редактирования .bashrc с использованием ST3


Дальнейшее чтение

  • Поддержка файловой системы WSL
  • Вот хорошая доска, рассказывающая о том, как работает WSL / LXSS и почему редактирование / копирование файлов и перемещение их в монтирования VolFS не всегда будут работать. Смотрите в частности 15:15 в видео
ДэвидПостилл
источник
Я почти пересекся с твоим ответом, еще раз! Ответ @ urig подтверждает ваш диагноз.
AFH
Спасибо @DavidPostill, но ваши первые предложения не сработали, потому что WSL не смог распознать плохой .bashrcфайл. Последнее предложение довольно агрессивно, так как полностью переустанавливает WSL. К счастью, мне удалось решить, используя более простую и быструю операцию - см. Мой собственный ответ на мой вопрос.
Urig
1
@urig Отлично! Хорошая работа, вы не персонализировали файл, хотя ...
DavidPostill
FYI lxrunустарела с 1709 года. wslconfigЭто новый инструмент CLI, в то время как Store является правильным местом для установки / удаления дистрибутивов. См .: blogs.msdn.microsoft.com/commandline/2017/10/11/…
Боб,
3

Я нашел минимальное решение моей проблемы. Мой WSL работает под управлением Ubuntu. В Ubuntu есть нетронутая копия .bashrcUnder /etc/skel.

  1. Я удалил свою плохую копию с .bashrcпомощью Windows Explorer.
  2. В Bash я скопировал оригинальную копию так: cp /etc/skel/.bashrc ~/

(На основе этого ответа AskUbuntu: https://askubuntu.com/questions/198730/how-to-restore-bashrc-file )

Urig
источник
Примечание: все существующие оболочки bash должны быть закрыты до регистрации удаления файла github.com/Microsoft/WSL/issues/904#issuecomment-293819387
Aralox