Como posso configurar o zsh para ser o shell padrão no Cygwin?
35
A menos que você esteja usando o cygwin como um ambiente multiusuário (nesse caso, use chsh
como faria em um ambiente padrão).
Caso contrário, basta alterar o cygwin.bat para executar em zsh -l -i
vez de bash --login -i
e ele será executado como um shell de login.
Obviamente, se você deseja executar vários shells na inicialização, basta criar um conjunto de .bat
arquivos para carregar diferentes shells. ( sh
, ksh
, csh
, fish
Etc)
Eu senti que deveria atualizar isso para fornecer informações sobre como fazer isso sem, chsh
mas ainda assim, no final do Unix. Edite o /etc/passwd
arquivo e substitua as ocorrências de /bin/bash
por /bin/zsh
. (Isso é efetivamente o chsh
que faria, mas dessa forma você faria para todos os usuários de uma só vez.)
mkpasswd -l -p "$(cygpath -H)" > /etc/passwd
e edite o/etc/passwd
arquivo recém-criadoSe eu li sua pergunta corretamente, você está procurando outra coisa além do que a chere fornece (o que, é verdade, é bem legal por si só).
A versão atual do Cygwin não possui um arquivo / etc / passwd , e o sistema no qual estou trabalhando possui informações da conta do Windows em um banco de dados de domínio fora do meu controle. Conseqüentemente, o chsh não é mais suportado.
Também descobri que o bash não é codificado no script startxwin , nem em qualquer arquivo .bat. Acontece que você não precisa mexer nos arquivos .bat.
Procurando como mudar meu shell, encontrei alguns conselhos sobre o mkpasswd
Eu adicionei à mistura.
A página de manual dizia:
(Não sei por que o espaçamento é tão "desligado" ...)
Eu então usei o seguinte comando:
mkpasswd -c | sed -e 'sX / bashX / zshX' | tee -a / etc / passwd
Na próxima vez que você abrir um Terminal Cygwin, ele irá direto para o zsh
E acho que foi isso que você pediu.
fonte
Acabei de adicionar o
bin
diretório no diretório cygwin à minha Variável de ambiente de caminho do Windows e, em seguida, crie um atalho para:ou apenas altere o atalho padrão do menu iniciar do cygwin para o mesmo.
fonte
/bin/zsh
vez dezsh
.the bin directory in the cygwin directory to my Windows Path Environment Variable
funciona sem essa mudança para mimi
não é necessário porque será um shell de login e nãointeractive
.Copiado da minha resposta no Stack Overflow :
Em vez de criar um arquivo passwd, recomendado pelo Cygwin contra 1 , você pode editar o arquivo /etc/nsswitch.conf . Adicione ou edite a seguinte linha:
O lado negativo / negativo desse método é que, se você tiver vários usuários, essa alteração afetará todos eles. O lado positivo / negativo é que é simples demais. O único problema é que você precisa reiniciar o Cygwin.
Se você fazer uso mkpasswd após essa mudança, ele usará o seu novo shell padrão para todos os usuários que têm permissão para fazer logon.
1 A documentação do mkpasswd diz o seguinte:
Eu realmente não consigo encontrar nenhum raciocínio sólido no guia do usuário , exceto uma menção de que você precisará gerar novamente os arquivos / etc / passwd e / etc / group se seus usuários e grupos mudarem, o que eu acho que é bastante decente razão. Posso dizer que o processo é um pouco propenso a erros para iniciantes.
fonte
Supondo que você esteja interessado em alterar o shell usado no mintty / Cygwin Terminal, ele primeiro verifica a variável de ambiente SHELL, depois o arquivo passwd (agora inexistente) e depois volta para / bin / sh, que é o que parece estar fazendo por padrão.
Eu era capaz de definir a variável de ambiente SHELL no Windows para
/usr/bin/zsh
e funcionou sem quaisquer outras alterações. Acabei de mudar para o meu usuário do Windows, não globalmente.A configuração de uma variável de ambiente provavelmente varia para diferentes versões do Windows. Tente procurar por "ambiente" no seu Painel de Controle do Windows. Para mim, no Windows 7, era Painel de controle → Sistema → Configurações avançadas do sistema, que exibe o painel de controle / caixa de diálogo Propriedades do sistema, a guia Avançado e o botão Variáveis de ambiente, que exibe a caixa de diálogo Variáveis de ambiente e, em seguida, crie uma variável de usuário nova chamada
SHELL
com o valor/usr/bin/zsh
. Então, OK, retire tudo isso e comece uma nova casa da moeda.fonte
Apenas pensei em adicionar esta resposta, caso isso ajude quem está procurando. Se você usar o chere (que adiciona uma opção "Bash prompt here" ao menu de contexto de qualquer pasta), você pode configurá-lo para zsh ("Zsh Prompt Here") com:
fonte
Se você deseja usar o shell Cygwin dentro do IDE Intellij, use as seguintes configurações em settings / tools / terminal
Isso incorporará o shell cygwin dentro do intellij, em vez de gerar uma nova janela
fonte