Bash в Windows 10 ничего не делает и возвращается в командную строку

Bash в Windows 10 ничего не делает и возвращается в командную строку

Буквально сегодня 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(добавьте любые из ранее обсуждавшихся опций, если они помогут вам запустить его без ошибок).

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