Alterar o shell padrão no MSYS2

10

Eu quero alterar o shell padrão do MSYS2 de bash para zsh .

Eu tentei chsh - não disponível no MSYS2.
A edição de /etc/passwd não faz nada. Parece ser ignorado.

Eu dei uma olhada nos scripts de lote no diretório raiz do MSYS2, e bash foi codificado. Eu mudei cada /usr/bin/bash para /usr/bin/zsh , o que funcionou bem, até que eu tentei usar MinGW.

Onde posso alterar o shell do MSYS2 (apropriadamente), se possível?

    
por sorbet 23.08.2015 / 23:53

6 respostas

7

Acabei de me deparar com este problema. Para obter o zsh em execução, fiz isso:

  • MSYS2 instalado
  • No diretório que eu instalei o MSYS2, eu executei mingw32_shell.bat
  • Atualizou todos os pacotes instalados executando pacman -Syu
  • Instalado zsh e curl executando pacman -Sy zsh curl
  • Encerrou o shell do MinGW executando exit - Eu não executei zsh imediatamente após a instalação.
  • Editou msys2_shell.bat, mingw32_shell.bat e mingw64_shell.bat e alterou todas as instâncias de: %código% para: %código% (na linha 39 a partir de 2015-09-23)
  • Ran start %WD%mintty -i /msys2.ico /usr/bin/bash --login %*
  • No menu de configuração do zsh, seleciono start %WD%mintty -i /msys2.ico /usr/bin/zsh --login %* para criar o arquivo .zshrc.

Quando a configuração terminou, vi:

zsh-newuser-install:1119: command not found: rm

O que não parecia certo ... já que mingw32_shell.bat nunca deveria ser encontrado em um sistema * nix saudável (eu acho que é um bug com o pacote zsh do MSYS2), mas tudo correu bem depois disso.

A primeira vez que tentei isso quando corri abriu um arquivo de lote para criar uma nova sessão, recebi um erro sobre o espaço de memória do zsh já estar ocupado. Para corrigir isso, fechei todas as janelas MinTTY abertas e executei o arquivo 0 no diretório de instalação do MSYS2. Tudo funcionou depois disso.

Então eu instalei o oh-my-zsh. Usando:

rm

    
por 23.09.2015 / 22:41
14

Eu corri para isso usando o mais novo launcher msys2, que fornece .exe launchers ao invés de batch files.

Para isso, era simplesmente uma questão de alterar os arquivos .ini juntamente com os ativadores dentro do diretório raiz Msys2 (para uma instalação de 64 bits, ele pode conter msys2.ini , mingw32.ini e mingw64.ini ). Para cada um desses arquivos ini, adicione uma linha para definir o shell:

SHELL=/usr/bin/zsh
    
por 26.06.2016 / 19:54
3

Quando a mudança do shell padrão não é suportada, uma maneira de usar o shell que você gosta é iniciá-lo imediatamente quando o shell padrão é iniciado.

Por exemplo, apenas escreva zsh to ~/.bashrc e quando o bash iniciar, ele será executado zsh para você. Como sempre um processo bash é deixado em execução, e você tem que sair do shell duas vezes ao sair. Para torná-lo melhor, escreva exec zsh em vez de zsh , desta forma, o processo bash é completamente substituído por um processo zsh.

Este método não é perfeito, mas deve funcionar bem na maioria dos casos. Em comparação com a alteração de valores codificados, isso pode causar menos problemas de compatibilidade.

É mencionado pela primeira vez em esta resposta no StackOverflow .

    
por 24.08.2015 / 14:53
3

Edite /etc/nsswitch.conf e altere a configuração abaixo:

db_shell: /bin/zsh
    
por 29.04.2016 / 02:15
1

Eu tenho uma solução, mas é necessário que você use ConEmu em vez de qualquer outro terminal que você esteja usando atualmente. Experimente, na minha opinião, é o melhor aplicativo de terminal no Windows.

Primeiro de tudo, você precisará instalar o zsh usando o pacman. Eu acho que você já chegou tão longe. Então, você precisará instalar o ConEmu (o que você pode fazer com o Chocolatey ou apenas baixando o instalador do site do conemu). Nas configurações do ConEmu, em 'Tarefas', você deve adicionar uma nova tarefa. Provavelmente já tem um chamado Bash::Msys2-64 ou algo assim então talvez você faça um chamado Zsh::Msys2-64 . O nome é arbitrário em qualquer caso. Na caixa 'Comandos' para essa nova tarefa, basicamente você pode copiar o comando de Bash::Msys2-64 e substituir zsh.exe quando apropriado. O meu é como:

set CHERE_INVOKING=1 & %ConEmuDrive%\msys64\usr\bin\zsh.exe --login -i -new_console:C:"%ConEmuDrive%\msys64\msys2.ico"

Em seguida, nas opções 'Startup' do ConEmu, você pode definir isso como sua tarefa de inicialização, para que a abertura do ConEmu o leve diretamente para o seu Zsh toda vez. Obviamente, você também pode definir um combo de teclas para abri-lo ou qualquer outra tarefa em uma nova aba ou o que você quiser. O ConEmu tem muitas opções, então tenho certeza que você poderá configurá-lo da maneira que quiser.

    
por 28.03.2016 / 08:36
1

Minha instalação fez não ter os arquivos mencionados na resposta aceita ( msys2_shell.bat , mingw32_shell.bat e mingw64_shell.bat ).

Em vez disso, minha instalação do sistema Win10 de MSYS2 (usando o arquivo do instalador msys2-x86_64-20161025.exe ) tem um único arquivo, msys2_shell.cmd com o linha:

set "LOGINSHELL=bash"

Alterei bash para zsh . Parece funcionar até agora.

    
por 22.04.2018 / 14:43