Приложение "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