Буквально сегодня bash
на моей машине с Windows 10 полностью перестал работать. Запуск bash
из командной строки приводит к паузе примерно в одну секунду, а затем немедленно возвращает обратно в командную строку.
Я уже пробовал удалить и переустановить "Подсистема Windows для Linux" отВключение и выключение функций Windows(несколько раз) с соответствующими перезагрузками (см. ниже):
Что еще я могу сделать, чтобы bash
снова начать работать?
--- Редактировать с дополнительной информацией ---
Вывод wsl.exe -l -v
дистрибутивов и версий, установленных на моей локальной машине:
Для дальнейшего контекста были установлены изображения Ubuntu
иDebian
послеЯ начал испытывать проблему с bash
командой еще до сегодняшнего дня.
решение1
Кажется, есть некоторые удаленные комментарии, но для ясности Microsoft называет bash.exe
"исторической командой" на той странице, на которую вы ссылаетесь. Я не считаю ее "устаревшей" (поскольку, как вы указали, они явно перечисляют устаревшие команды). Но "историческая", IMHO, всего на один шаг впереди "устаревшей". Кроме того,Документация по взаимодействию WSL/Windows, говорит " bash.exe
былозаменено на wsl.exe
" (выделено мной).
В любом случае,рекомендуемыеспособ запуска (в настоящее время) определенно через wsl.exe
команду, поскольку она предоставляет гораздо больше опций и является более надежной. Также возможно, что дистрибутивы, такие как Alpine, даже не включают оболочку bash
, так что это в любом случае немного неправильное название.
Не то, что bash.exe
само по себе, скорее всего, ваша проблема. Просто вам, вероятно, понадобятся функции для wsl.exe
восстановления.
Вы отметили, что установили Ubuntu и Debianпослеэта проблема начала происходить. Означает ли это, что вы былитолькозапускали Docker Desktop до этого? Типичная установка WSL выглядит так:
- Установите саму функцию WSL (вместе с ядром WSL2)
- Установить дистрибутив
- Затем установите Docker Desktop.
Однако, если у вас было только два docker-desktop*
экземпляра, то, похоже, вы не устанавливали никаких других дистрибутивов. Это не рекомендуется. docker-desktop
Экземплярявляетсязапускается, но я считаю, что он на самом деле предназначен для внутреннего использования Docker Desktop (например, настройка сокетов Docker). Я могу ошибаться...
Что касается того, почему bash.exe
больше не запускается ваш docker-desktop
контейнер по умолчанию, я не уверен, но это, скорее всего, связано с вашей конфигурацией запуска bash. Когда WSL завершает работу без сообщения об ошибке, это обычно связано с проблемойвнутриэкземпляр. WSL, похоже, не перенаправляет stderr обратно на хост, или, возможно, ему просто нужно какое-то перенаправление, в которое я пока не вникал.
Чтобы попытаться выяснить, что происходит не таквнутри, попробуйте запустить с помощью любого из следующих:
wsl -e bash --noprofile --norc # Launches without any startup profile
wsl -u root # Launches as root instead of the default user
wsl -e sh # Launches the dash shell instead of bash
wsl -u root -e sh # Same as above, but as root
Если один или несколько из них работают, то вы можете начать устранение неполадок в конфигурации запуска оттуда. Если вы можете запуститься как root, то вы можете su yourusername
переключиться на своего пользователя. Поскольку вы запускаетесь извнутриэкземпляра WSL, вы сможете увидеть любые сообщения об ошибках, которые можно было бы скрыть при запуске из командной строки Windows.
Однако в конечном итоге я бы рекомендовал вам установить другой дистрибутив по умолчанию, выполнив:
wsl --set-default Ubuntu
Вы все еще можете вернуться к"docker-desktop"дистрибутив для копирования всех необходимых файлов через wsl -d docker-desktop
(добавьте любые из ранее обсуждавшихся опций, если они помогут вам запустить его без ошибок).