Questão Como alterar o Login Shell no Mac OS X de bash para zsh?


Eu estou tentando mudar o shell de login do Mac OS X de bash para zsh. Entendo é possível no Mac OS X Leopard, mas para o OS X Lion não consigo encontrar um caminho. Eu realmente espero que seja possível mudar o shell de login do bash para outra coisa. Não sei exatamente onde procurar.


79


origem


Depois de alterar o shell para o zsh, ainda tive que iniciar o zsh manualmente. Sair não ajudou. Então eu mudei o zsh para o shell de login. Saiu e lá estava.
Se nada mais, você sempre pode modificar o .bashrc para localizar e executar zsh. if [ -x /usr/local/bin/zsh ] ; then exec /usr/local/bin/zsh fi. Dica, ao modificar os scripts de inicialização do shell, certifique-se de manter um shell em execução e iniciar um novo em outra janela - se você o quebrar, ainda terá um local fácil para solucioná-lo. - Dan Pritts


Respostas:


Você pode alterar o shell do usuário pelo seguinte comando:

chsh -s /bin/zsh

Nota: Para alterá-lo para um shell não padrão, verifique se seu caminho foi adicionado ao /etc/shells Arquivo.


88



Eu instalei uma nova versão do zsh com o Homebrew, que colocou o zsh em /usr/local/bin/zsh. Infelizmente, o chsh não permite isso, dizendo chsh: /usr/local/bin/zsh: non-standard shell. A resposta de Daniel Beck é uma solução adequada neste caso. - adam_0
Se você está tendo problemas com shells não padrão, eu acho que você deve ser capaz de adicionar /usr/local/bin/zsh para /etc/shells e isso deve resolver esse problema. - Mike Meyers
O homebrew zsh install info realmente recomenda que você o adicione em / etc / shells: ==> Caveats To use this build of Zsh as your login shell, add it to /etc/shells. - George
Não funciona às vezes. @ resposta da franquia garante que embora - oliverbarnes
@Awesome_girl Por padrão, /etc/shells é propriedade e somente gravável por, root (o superusuário). Você poderia, por exemplo, usar sudo vi /etc/shells usar sudo (super vocêSer Faz) para executar o vi editor para editar /etc/shells. Acabei de testar em meu sistema e confirmei que ele NÃO é protegido pela Proteção de Integridade do Sistema, portanto, você deve poder editá-lo como root sem passar por aros para desabilitar o SIP. - Spiff


Curiosamente, o mesmo método que você liga na sua pergunta ainda trabalha no OS X Lion através da Sierra (10.12). A única diferença: o painel de preferências é nomeado Usuários e Grupos ao invés de Contas.

  1. Abra "Preferências do Sistema" → "Usuários e Grupos".
  2. A menos que o ícone de bloqueio já esteja desbloqueado, clique no ícone de bloqueio e autentique-se.
  3. Contexto-clique em um usuário na lista de nomes de usuários   (segure o Ao controle enquanto clica ou clica com o botão direito do rato num rato com dois botões para a mão direita).
  4. No menu de contexto, escolha "Opções avançadas ...".
  5. Escolha "Login shell" na folha que aparece.

A nota na parte superior da tela "Opções avançadas"   reivindicações que você precisa reiniciar para que a alteração entre em vigor,   mas você realmente só precisa sair e voltar novamente.

enter image description here


46



Confirmei que isso funciona no Mountain Lion, além de trabalhar com "shells não padrão" que você pode instalar sozinho (ou instalar o Homebrew). - adam_0
Confirmado ainda trabalhando em 10.10 Yosemite. - ecnepsnai
clique com o botão direito do mouse no nome de usuário para abrir o menu que contém "opções avançadas". Isso me levou alguns minutos para encontrar. - pdwalker
Por que forçar alguém a ir ao local para coletar todas as informações antes de poder responder? Daí o comentário no caso de alguém fazer a mesma suposição de que a resposta está aqui e não aqui e ali. - pdwalker
@jvriesem Na verdade, isso acontece. Meu palpite é que você pulou o passo 2. - Daniel Beck♦


Ou:

sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh)

10



Você pode explicar por que isso responde à pergunta? - ChrisF
Certifique-se de executar este depois de  brew install zsh. - mmell
Além disso, tenha cuidado para que o caminho do zsh instalado via homebrew seja diferente. Eu faço assim: sudo dscl . change /users/$USER UserShell /bin/bash $(which zsh) - metakermit
ATENÇÃO: Isto irá quebrar o seu shell se você copiá-lo / colá-lo sem antes checar o caminho do zsh. Faça o que metakermit disse em vez disso. - radixhound


Se alguém se perguntando mesmo problema acontece no macOS Sierra e seguinte comando me permitiu mudar de shell sem problemas:

chpass -s /usr/local/bin/zsh

1



Isso duplica outra resposta e não adiciona conteúdo novo. Por favor, não poste uma resposta a menos que você tenha algo novo para contribuir. "chfn e chsh são sinônimos para chpass." - DavidPostill♦