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).

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 .


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.


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.


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)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.