Utilizar o zsh como a shell predefinida no Mac

A partir do macOS Catalina, o Mac utiliza o zsh como a shell interativa e a shell de acesso predefinida. Também pode tornar o zsh a predefinição em versões anteriores do macOS.

Por predefinição, o Mac utiliza o zsh ou o bash como intérprete da linha de comandos para a shell interativa e a shell de acesso:

  • O zsh (shell Z) é a shell predefinida para todas as contas de utilizador criadas recentemente, a partir do macOS Catalina.

  • O bash é a shell predefinida no macOS Mojave e anterior.

O zsh é altamente compatível com a shell Bourne (sh) e é principalmente compatível com o bash, com algumas diferenças. Para obter mais informações acerca do zsh e do respetivo sistema de conclusão da linha de comandos abrangente, introduza man zsh no Terminal.

Como alterar a shell predefinida

Quer a sua conta de utilizador esteja configurada para utilizar zsh (recomendado), bash ou outra shell, pode alterar a shell predefinida na linha de comandos ou nas definições de Utilizadores e grupos.

Na linha de comandos

No Terminal, introduza$ chsh -s path, onde o caminho se refere a um dos caminhos shell indicados em /etc/shells, such as /bin/zsh, /bin/bash, /bin/csh, /bin/dash, /bin/ksh, /bin/sh ou /bin/tcsh.

Nas definições de Utilizadores e grupos

No macOS Ventura ou posterior:

  1. Selecione o menu Apple  > Definições do sistema e, em seguida, clique em Utilizadores e grupos na barra lateral.

  2. Faça Controlo+clique no nome de utilizador ou na imagem de utilizador na lista de utilizadores à direita e, em seguida, selecione Opções avançadas.

  3. Introduza o nome de utilizador e a palavra-passe quando lhe for solicitado.

  4. Selecione uma shell no menu "Shell de acesso" e, em seguida, clique em OK para guardar as alterações.

Em versões anteriores do macOS:

  1. Selecione o menu Apple  > Preferências do sistema e, em seguida, clique em Utilizadores e grupos.

  2. Clique no cadeadoNo alt supplied for Image e introduza a sua palavra-passe de utilizador.

  3. Faça Controlo+clique no nome de utilizador na lista de utilizadores à esquerda e, em seguida, selecione Opções avançadas.

  4. Selecione uma shell no menu "Shell de acesso" e, em seguida, clique em OK para guardar as alterações.

Como utilizar uma shell diferente sem alterar a predefinição

Se não quiser que o Terminal utilize a shell de acesso predefinida em novos separadores e janelas do Terminal:

  1. Abra o Terminal e, em seguida, selecione Terminal > Definições (ou Preferências).

  2. No painel Geral, selecione "Comando (caminho completo)".

  3. No campo adjacente, introduza um dos caminhos de shell listados em /etc/shells, tal como /bin/zsh, /bin/bash, /bin/csh, /bin/dash, /bin/ksh, /bin/sh ou /bin/tcsh.

Se invocar a shell do bash enquanto o macOS estiver configurado para utilizar uma shell diferente, verá uma mensagem a indicar que a shell interativa predefinida é agora o zsh. Para silenciar este aviso, pode adicionar este comando a ~/.bash_profile ou ~/.profile:

exporte BASH_SILENCE_DEPRECATION_WARNING=1

Como mudar para uma linha de comandos e um perfil zsh

Se estiver a utilizar um perfil bash, por exemplo, para definir variáveis de ambiente, alias ou variáveis de caminho, deve mudar para um equivalente a zsh. Por exemplo:

  • .zprofile é equivalente a .bash_profile e é executado no início de sessão, incluindo através de SSH

  • .zshrc é equivalente a .bashrc e é executado para cada nova sessão do Terminal

Se estiver a utilizar .profile (um perfil compatível com POSIX), pode fazer com que o zsh leia automaticamente as respetivas definições ao adicionar este comando a .zprofile:

[[ -e ~/.profile ]] && emule sh -c 'source ~/.profile'

Também pode mover algumas definições de um perfil bash para um perfil zsh sem modificações. Por exemplo, para definir variáveis de ambiente: export MY_SETTING=1.

O zsh reconhece um conjunto de especificadores da linha de comandos diferente do bash e tem uma sintaxe mais limpa para especificar a saída de cores, eliminando a necessidade de utilizar sequências escape ANSI complexas. Por exemplo, eis a sintaxe para uma linha de comandos bash predefinida de .bash_profile:

exporte PS1="\[\e[92;40m\]\h\[\e[m\]:\[\e[93m\]\W\[\e[m\] \\$ "

Para converter essa linha de comandos bash numa linha de comandos zsh com .zprofile ou .zshrc:

exporte PS1="%10F%m%f:%11F%1~%f \$ "

Veja a página man do zsh para obter mais detalhes.

Como testar os scripts da shell

Para testar a compatibilidade de scripts com shells compatíveis com Bourne no macOS Catalina ou posterior, pode alterar /var/select/sh para /bin/bash, /bin/dash ou /bin/zsh. Se alterar /var/select/sh para uma shell diferente de bash, tenha em atenção que os scripts que utilizam extensões bash podem não funcionar corretamente.

O zsh pode imitar o sh ao executar o comando zsh --emulate sh.

As informações sobre os produtos não fabricados pela Apple ou os sites independentes não controlados ou testados pela Apple são disponibilizadas sem recomendações nem aprovação. A Apple não assume qualquer responsabilidade no que diz respeito à seleção, ao desempenho ou à utilização dos sites ou produtos de terceiros. A Apple não garante a precisão nem a fiabilidade dos sites de terceiros. Contacte o fornecedor para obter mais informações.

Data de publicação: