Como altero o shell padrão de um usuário no OSX?

33

Qual é a maneira OSX correta de alterar o shell padrão de um usuário? Quando procurei no Google, encontrei várias referências a um aplicativo chamado NetInfo Manager, mas não o encontrei no meu sistema. Também havia referências a uma versão de linha de comando chamada niutil, que eu também não encontrei.

David Holm
fonte
possível duplicata de Como configuro meu shell no Mac OS X?
Daniel Beck

Respostas:

52

para <= 10.4 - netinfo manager, / users / whoever / shell

para> = 10,5

  1. Vá para Preferências do Sistema -> Contas
  2. Clique no ícone de cadeado para desbloquear o painel de preferências
  3. Clique com o botão direito do mouse (ou clique com a tecla Control pressionada) no usuário e selecione "opções avançadas"
  4. Editar campo do shell de login
Chopper3
fonte
5
Uau, depois de 8 anos de uso do OS XI não sabia sobre o controle de cliques nas preferências dos usuários: acho que isso foi adicionado na versão 10.5, como você apontou. 1
jkp
1
Control-Click é impressionante!
Eonil
1
O Lifesaver depois de mover o shell da minha conta para fora do PATH ... não foi possível iniciar o Terminal para corrigir via linha de comando!
Davemyron 31/10/12
2
Não funciona mais no el Capitan?
MarcusJ
É verdade que este é o problema com esse tipo de coisa, 7 anos depois e as coisas mudaram - por que não fazer algumas pesquisas, adicionar e responder e isso será votado? É assim que as coisas funcionam, melhor do que apenas responder pequenas respostas
Chopper3
33
sudo chsh -s /path/to/shell username

onde shell é o que você deseja para esse usuário. sudonão é necessário se você souber usernamea senha.

man chsh

para mais exemplos.

churnd
fonte
funciona também para root para su, que não é visível no painel de controle. Eu acho que?
Chris F Carroll
4
Você também pode executar just chshe alterar o campo shell. Se você receber um erro como chsh: /usr/local/bin/bash: non-standard shell, adicione /usr/local/bin/basha /etc/shells.
Lri
3
Talvez algo tenha mudado no 10.9, mas esse comando agora lança uma mensagem de uso. Parece que a sintaxe correta é agorachsh -s /path/to/shell username
Matthematics
9

O NetInfo foi substituído pelos Serviços de Diretório (dscl) e pode-se observar o shell padrão para o Mac OS X desde que a versão 10.3 tenha sido realizada. Antes disso, era tcsh.

Se você precisar fazer isso na linha de comando (por exemplo, para enviar via ARD ou remotamente via SSH), execute:

sudo dscl localhost -change /Local/Default/Users/USERNAME shell OLD_SHELL NEW_SHELL
#In Use:
sudo dscl localhost -change /Local/Default/Users/chealion shell /bin/bash /bin/zsh

Se você não tem certeza do shell atual, pode executar:

sudo dscl localhost -read /Local/Default/Users/USERNAME shell

Se o usuário não for um usuário local, o caminho será alterado e, se necessário, você mudará localhostpara o nome do seu Open Directory Server. (Supondo que execute 10,5).

As informações são armazenadas em .plists (xml) em /private/var/db/dslocal/- você não deseja editar os arquivos plist manualmente.

Chealion
fonte
7

Para 10.10:

não shellmas UserShell:

sudo dscl localhost -change /Local/Default/Users/USERNAME UserShell /bin/bash /bin/ksh
willem
fonte