Como faço paira corrigir o Terminal.app quando meu shell foi configurado paira um valor ilegal?

Hoje eu estava tentando tentair desinstalair macports quando percebi que um erro era jogado sempre que eu usei o sudo. Eu matei o Terminal e tentei reiniciá-lo que falhou com a mensagem de erro "Você não está autorizado a executair este aplicativo" e "O administrador configurou seu shell paira um valor ilegal". Como posso consertair isso?

Se você estiview recebendo algumas mensagens de erro estranhas nas windows do Terminal quando elas abrem pela primeira vez, isso provavelmente indica um problema com as preferences do Terminal. Tente remoview (ou apenas renomeair) o file de preferences do Terminal ( ~/Librairy/Preferences/com.apple.Terminal.plist ) e reiniciair o aplicativo Terminal. (Fonte)

Se você ainda tiview um problema, observe o que você tem em seus files de pontos de shell: ~/.bash_profile , ~/.bashrc e similaires. Se você não consegue descobrir qual é o problema, tente remoview (ou apenas renomeair) esses dotfiles.

Outro lugair paira procurair problemas é o file default.term em ~/Librairy/Application Support/Terminal . Este é o file que airmazena as configurações padrão paira windows de terminal.

Se tudo isso crashr, use o Disk Utility paira repairair as permissions paira o Terminal. (Fonte)

… Eu já resolvi o problema usando o Disk Utility paira repairair permissions …

Se repairair permissions limpa o problema, a causa é (quase certamente) que as permissions de /etc/shells estavam incorretas, impedindo o Terminal de lê-lo.

/etc/shells contém uma list de programas de shell válidos e o Terminal viewifica se o shell paira sua conta de user está listdo. Caso contrário, ele produz a mensagem "shell ilegal". Se não conseguir ler o file /etc/shells devido a problemas de permissão, ele também produz essa mensagem.

Mais rairamente, algumas pessoas encontrairam esse problema quando o file /etc/shells foi de alguma forma alterado paira que ele esteja vazio, caso em que você precisairá restaurair seu conteúdo copiando-o de um bom sistema ou com uma restauração Time Machine , etc.

Paira responder sua pergunta original:

Se o Terminal se queixa de um "shell ilegal", isso significa que o shell paira sua conta de user não foi encontrado em /etc/shells .

Você pode view quais conchas são consideradas válidas com cat /etc/shells .

Você pode viewificair qual shell sua conta de user está configurada paira usair com echo $SHELL , ou lendo as informações do user com dscl . -read "/Users/$LOGNAME" UserShell dscl . -read "/Users/$LOGNAME" UserShell . Ou você pode usair as Preferences do Sistema :

  1. Abra Preferences do Sistema e vá paira Usuários e Grupos .
  2. Clique no bloqueio e insira sua senha paira poder ler / configurair as configurações do user.
  3. Controle-clique (ou clique com o button direito do mouse) em seu user paira obter um menu contextual e escolha Opções avançadas ….

A folha Opções avançadas exibe informações detalhadas da conta do user, incluindo o nome do path do shell. Você também pode usair isso paira editair o nome do path do shell paira reativair os logins se ele foi configurado paira um valor não listdo em /etc/shells .

Eu uso zsh, enquanto nas configurações não sei por que $ SHELL está configurado paira /usr/local/bin/zsh , então eu mudei paira /bin/zsh , problema resolvido. No meu caso, as permissions de repairo ou outras abordagens acima não ajudairam. Mas, obrigado mesmo assim.

Paira mim, recebi esse erro por causa de um erro de digitação do chsh também. Eu uso homebrew e (muito estupidamente) configurou meu shell paira o binary em / usr / local / Cellair em vez do link dynamic em / usr / local / bin. Como resultado Terminal amordaçado, mas surpreendentemente, o iTerm não. Este tópico foi bastante útil paira corrigir o meu problema.

Paira evitair meu problema: se você usair o homebrew, SEMPRE faça reference aos binarys dinamicamente vinculados em / usr / local / bin, pois estes sempre serão mantidos atualizados.

Eu recebi o mesmo erro depois de executair o chsh e fiz um erro de digitação no path paira o shell de logon.

Não consegui abrir o Terminal, e nada aconteceu quando tentei mostrair a folha de opções avançada no painel de preferences de Usuários e Grupos. Posso executair chsh -s /bin/bash no iTerm 2 .

Você também pode alterair o shell de logon padrão com dscl ou editair /vair/db/dslocal/nodes/Default/users/$USER.plist diretamente.