Como alterar o shell padrão para o sistema operacional Linux para Windows

10

Instalei o subsistema Linux para Windows 10. Ele funciona bem, mas quero alterar o ambiente de shell padrão para o subsistema.

Eu fiz sudo apt-get install fishe então chsh -s /usr/bin/fish. Mas quando inicio bash.exeno Windows, ele sempre inicia o bash (acho que é previsível).

Alguém conhece argumentos para mudar esse comportamento?

Inveja
fonte
Quando você inicia, bash.exeobviamente está iniciando explicitamente o bash. Não estou familiarizado com o subsistema Linux no Windows 10, mas esperaria que houvesse alguma maneira de iniciar um shell "Linux" sem iniciar explicitamente um shell específico.
um CVn
Você tentou uma edição feia do seu bashrc ou bashprofile para redirecionar as chamadas interativas do bash para pescar? Adicionar uma linha como isatty && exec fishpode valer a pena quando você estiver totalmente sem soluções reais.
A. Loiseau

Respostas:

6

Você não pode alterar o shell padrão em si, pois o subsistema Linux é iniciado por meio do bash.exe, que reside no diretório do sistema.

No entanto, você pode criar um novo atalho como o que já existe para o bash e executar o comando

%systemroot%\system32\bash -c /usr/bin/fish

Dessa forma, você estará executando o peixe imediatamente.

Sami Kuhmonen
fonte
11
Eu costumava %systemroot%\system32\bash.exe ~ -c /bin/zshfazer o ZSH aberto no meu diretório pessoal.
David Pärsson
Como alternativa, defina o campo "Iniciar em" no atalho %userprofile%para iniciar o shell no seu diretório pessoal.
dOxxx 29/09/16
@ konqui Isso não quebra nenhum outro shell. É um novo atalho para iniciá-lo. Sua festança vai funcionar muito bem
Sami Kuhmonen
@SamiKuhmonen não foi dito nada sobre um novo atalho - eu o corrigi agora, posso dar vida a essa resposta.
Konqui #
9

Desde a Atualização dos criadores de outono, você pode usar chshpara definir o shell padrão. Isso ainda não funciona se você estiver executando o WSL usando o bash.execomando, mas isso funcionará se você estiver executando o WSL com o ubuntu.execomando

Além disso, desde a atualização dos criadores de outono, devemos instalar o sistema operacional WSL da Windows Store .

Defina zshcomo shell padrão:

chsh -s /bin/zsh

em seguida, execute (ou reinicie) ubuntu.exeno prompt de comando.

Mikhail
fonte
5

Abra o bash, execute nano ~/.bashrce cole isso em:

if [[ -t 1 && -x /usr/bin/zsh ]]; then
    exec /usr/bin/zsh
fi

Apenas mude o shell para fisho que quiser. A -xverificação é importante se você reinstalar o Bash - você não poderá abri-lo após uma nova instalação porque o execcomando falhará e o Bash será fechado.

Se isso acontecer, exclua / renomeie seu .bashrcarquivo aqui:

C:\Users\<USERNAME>\AppData\Local\lxss\home\<USERNAME>\.bashrc

O -tque eu acredito que verifica se stdout está aberta. Não sei por que isso é importante, copiei deste artigo .

mpen
fonte