EDIT: O seguinte é aplicável a versões anteriores do MSYS2. A partir de 2020-01-21, não é mais necessário. A resposta do FeRD parece funcionar melhor.
Eu queria usar peixe em vez de bash. Infelizmente, a maioria dos métodos aqui não funcionou, possivelmente porque a sintaxe do peixe é muito diferente.
O que funcionou melhor foi a idéia de wzhd sobre correr exec fish
como a primeira coisa quando o bash começa. No entanto, ainda havia um problema: se eu quisesse usar o bash, precisava editar .bashrc
para remover essa linha, porque, mesmo que eu a execute a partir de fish, ela iniciaria outra instância de fish.
A melhor coisa a fazer é garantir que seja exec fish
executado quando o msys2 iniciar, mas nem sempre que o bash começar.
A maneira que eu encontrei é através do arquivo msys2_shell.cmd
na pasta de instalação do msys2. Eu encontrei estas linhas:
set SHELL_ARGS=
:collectparams
if not "x%~1" == "x" set SHELL_ARGS=%SHELL_ARGS% %1& shift& goto :collectparams
Parece que eles estão definindo parâmetros a serem passados para o bash assim que começam, mas somente quando esse script é executado (ao contrário .bashrc
). Então eu adicionei esta linha logo após:
set SHELL_ARGS=%SHELL_ARGS% -c "exec fish"
Tudo parece estar bem até agora. O início do msys2 substitui o bash pelo fish assim que o primeiro termina o carregamento, mas se eu precisar de uma linha de comando do bash, ainda posso iniciá-lo bash
.