Como faço para que o WSL inicie meu shell de login por padrão?

Como faço para que o WSL inicie meu shell de login por padrão?

O aplicativo "Bash on Ubuntu on Windows" sempre inicia, bem, bash. Eu costumava chshdefinir outro shell como meu shell de login. Como faço para que o WSL inicie esse shell?

Responder1

Isso é corrigido emuma versão atualmente apenas para Insider, com o novo wsl.execomando:

A partir da compilação 16188, ao executar o bash.exe sem argumentos (ou com o argumento ~), o bash será iniciado como um shell de login. O mesmo se aplica ao novo binário wsl.exe (com a exceção de que wsl inicia o shell padrão do usuário como um shell de login).

Antes disso, você teria que editar o atalho para adicionar parâmetros de linha de comando (como -c 'exec "$SHELL" -l'):

Responder2

Um pouco de contexto histórico para quem está tentando adicionar uma nova resposta hoje em dia. Esta pergunta foi feita originalmente na era das trevas do início da WSL. Naquela época:

  • Ubuntu/WSL era conhecido como "Bash no Ubuntu no Windows"
  • Foi lançado através do bash.execomando
  • Istosemprelançou o shell Bash

O bash.execomando foi obsoleto há algum tempo e substituído pelo wsl.execomando que @muru mencionou emesta resposta.

Agora, você pode alterar seu shell padrão/de login para Fish (ou normalmente qualquer outro shell) usando os métodos padrão do Ubuntu mencionados, por exemplo, emesta resposta. Resumidamente:

  • Certifique-se de que o shell esteja representado em seu/etc/shells
  • chsh -s <path_to_shell>
  • Ou normalmente,chsh -d $(which fish)

Responder3

Para iniciar, por exemplo, pescar no Ubuntu no WSL, defina sua meta como

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

informação relacionada