Как сделать так, чтобы WSL запускал оболочку входа по умолчанию?

Как сделать так, чтобы WSL запускал оболочку входа по умолчанию?

Приложение "Bash on Ubuntu on Windows" всегда запускает, ну, bash. Я использовал chshдругую оболочку в качестве своей оболочки входа. Как мне заставить WSL запустить эту оболочку вместо этого?

решение1

Это исправлено вв настоящее время сборка доступна только для Insider, с новой wsl.exeкомандой:

Начиная со сборки 16188 при запуске bash.exe без аргументов (или с аргументом ~) bash будет запущен как оболочка входа. То же самое относится и к новому двоичному файлу wsl.exe (за исключением того, что wsl запускает оболочку пользователя по умолчанию как оболочку входа).

До этого вам пришлось бы редактировать ярлык, чтобы добавить параметры командной строки (например, -c 'exec "$SHELL" -l'):

решение2

Немного исторического контекста для тех, кто пытается добавить новый ответ в наши дни. Этот вопрос был изначально задан еще в темные-века-раннего-WSL. Тогда:

  • Ubuntu/WSL был известен как «Bash на Ubuntu на Windows»
  • Он был запущен через bash.exeкоманду
  • Этовсегдазапустил оболочку Bash

Некоторое время назад команда bash.exeбыла объявлена ​​устаревшей и заменена командой wsl.exe, которую @muru упомянул вэтот ответ.

Теперь вы можете изменить оболочку по умолчанию/входа на Fish (или, как правило, на любую другую оболочку), используя стандартные методы Ubuntu, упомянутые, например, вэтот ответ. Суммируя:

  • Убедитесь, что оболочка представлена ​​в вашем/etc/shells
  • chsh -s <path_to_shell>
  • Или, как правило,chsh -d $(which fish)

решение3

Чтобы запустить, например, fish в Ubuntu в WSL, установите цель

C:\Windows\system32\wsl.exe --distribution Ubuntu --exec fish

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