Copiado de minha resposta no estouro de pilha :
Em vez de criar um arquivo passwd, que o Cygwin recomenda contra 1 , você pode editar /etc/nsswitch.conf . Adicione ou edite a seguinte linha:
db_shell: /usr/bin/fish
O lado inferior / superior desse método é que, se você tiver vários usuários, essa alteração afetará todos eles. O lado positivo é que é muito simples. O único problema é que você precisa reiniciar o Cygwin.
Se você fizer usar o mkpasswd após essa mudança, ele usará o novo shell padrão para todos os usuários com permissão para fazer logon.
1 A documentação do mkpasswd diz isso:
Don't use this command to generate a local /etc/passwd file, unless you really need one. See the Cygwin User's Guide for more information.
Não consigo encontrar nenhum raciocínio sólido no guia do usuário , além de uma menção de que você terá que regenerar os arquivos / etc / passwd e / etc / group se seus usuários e grupos mudarem, o que eu suponho ser uma razão decente o suficiente. Eu posso dizer que o processo é um pouco propenso a erros para iniciantes.