Como defino meu shell no Mac OS X?

21

Eu sei que posso definir "Shells abertos com" nas preferências do Terminal, mas estou curioso para saber se existe alguma maneira de definir isso em todo o sistema (semelhante à atualização de / etc / passwd em alguns Unixes).

nall
fonte

Respostas:

24

Use o chshutilitário da seguinte maneira:

chsh -s bash

A Apple mudou chshum pouco no Mac OS X em comparação com o que chshvocê veria no Linux, por exemplo. Você pode ler sobre eles na página de manual do Mac OS X chsh .

John T
fonte
E aqui eu achei que era algo complicado com algum utilitário específico do OSX, heh. Obrigado.
nall
@ John - bem aprendida :)
akira
Sim, eu sabia a resposta da última vez também, fui derrotado por ela! :(
John T
19

Observe que você só poderá mudar para um shell listado em /etc/shells. Isso normalmente é bom, mas significa que, se você deseja instalar o Bash 4 (do Homebrew, MacPorts ou compilar o seu próprio), é necessário adicionar uma linha ao /etc/shells. (Eu me deparei com isso há algumas semanas e achei que poderia ajudar outras pessoas a saber ...)

Edit : Tim Smith ressalta que você pode contornar a /etc/shellslimitação se executar chshcomo root via sudo. Por exemplo sudo chsh -s /usr/local/bin/my_shell $USER, funcionará, mesmo que my_shellnão esteja listado em /etc/shells. Eu prefiro editar /etc/shells, mas, no final, é um uso de sudoqualquer maneira, já que você não pode editar /etc/shellscomo um usuário comum. Então talvez seis de um, meia dúzia do outro.

Telêmaco
fonte
Por que mudar /etc/shellsse você não precisa? Por sanidade, prefiro manter os arquivos do sistema iguais.
ma11hew28
@MattDiPasquale Não sei ao certo o que você quer dizer com "sanidade". /etc/shellsé o arquivo no sistema que define shells reconhecidos. Eu mudo esse arquivo porque quero adicionar um shell à lista de shells reconhecidos. Parece bastante razoável para mim.
Telêmaco
Alt bom. Por algum motivo, o chsh não funcionaria para mim. Eu tenho esse ; chsh: bash: non-standard shell
RyBolt 2/08/16
@RyBolt Certo: o motivo é provavelmente o que mencionei na resposta. Você não pode usar chshsozinho se estiver tentando usar um shell que não esteja listado /etc/shells.
Telêmaco
@Telemachus, eu estava apenas tentando mudar para o shell bash original que veio com minha versão padrão do Mac OSX. Talvez não seja o /etc/shellsque me parece estranho.
RyBolt
10

Para fazer isso usando a GUI do Mac OS X:

  1. Abra "Preferências do sistema".
  2. Abra o painel de preferências "Contas" / "Usuários e grupos" e desbloqueie o painel de preferências, se aplicável.
  3. No usuário que você deseja alterar o shell, control+ clique ou clique com o botão direito do mouse no usuário e escolha "Opções avançadas ..."
  4. Onde está escrito "Login Shell:", mude para o shell que você deseja usar.

Observe que esse local é onde você pode alterar seu diretório pessoal, UUID, ID do usuário, ID do grupo e nome abreviado se não se sentir à vontade com o Terminal. Há uma pergunta semelhante localizada aqui também.

Chealion
fonte
5

Usando as respostas acima, recebi uma mensagem de erro:

$ chsh -s zsh
Changing shell for myuser.
Password for myuser:
chsh: zsh: non-standard shell

Para contornar isso:

sudo chsh -s zsh $(whoami)

whoami em um subshell é alterar o shell para o usuário, não a raiz.

Mais uma coisa se você estiver usando homebrew. Quando você executa comandos como root (usando sudo), o zsh aponta para / bin / zsh, que acompanha o OSX e pode estar desatualizado. Para usar o que está instalado via homebrew, use o seguinte:

sudo chsh -s $(which zsh) $(whoami)
phil pirozhkov
fonte