Estou com algumas dificuldades para alterar o valor do $SHELL
aplicativo iTerm do OSX. O iTerm está começando /bin/zsh
, mas o valor de $SHELL
não parece mudar.
O que eu fiz:
- "Comando" alterado como
/bin/zsh
na janela de configuração do iTerm. - Executado
chsh
para alterar o shell para/bin/zsh
. - O iTerm confirmado foi iniciado em
/bin/zsh
NOTA 1: No aplicativo de terminal de ações da OSX, "Terminal.app":
echo $SHELL
/bin/zsh
NOTA 2: No popular aplicativo de terminal do OSX, "iTerm.app":
$ echo $SHELL
/bin/bash
$ echo $USER
$ melvkim
$ chsh -s /bin/zsh
Changing shell for melvkim.
Password for melvkim:
chsh: no changes made
/etc/shells
? O manual declara que, se o shell que você especificar não estiver nesse arquivo, ele não será considerado um shell padrão.Respostas:
O problema foram as configurações conflitantes do aplicativo "iTerm" com o shell. Para resolver, redefinii o comando "login shell" na janela de preferências do iTerm:
Então, eu executei
chsh
para modificá-lo como/bin/zsh
.Para reproduzir o problema (com $ SHELL definido como
/bin/bash/
, mesmo que o shell de logon esteja/bin/zsh
), basta alterar a configuração "iTerm" para "Comando: / bin / zsh /".fonte
O
-s
sinalizadorchsh
apenas tenta alterar o shell e provavelmente falha devido ao Open Directory: O sistema UNIX usual 'chsh' modificaria a/etc/passwd
entrada. No entanto, pude executarchsh
sem argumentos, o que me deu um editor e as seguintes informações:Consegui editar a entrada "Shell:"
/bin/zsh
e as janelas subsequentes do Terminal se abriram com um prompt do Z-shell.fonte
chsh
sem argumentos. Ainda sem sorte. A variável não muda. De fato, quando o editor foi carregado, ele mostrou/bin/zsh
.$SHELL
iTerm. Por favor, consulte a minha resposta para mais detalhes .. Obrigado!Procure aqui a excelente explicação e solução postada por @ mklement0 [em relação a um
bash
problema de atualização.Eu tive um problema semelhante ao fazer o oposto no meu sistema (OS X 10.10.1): criar
bash
o shell de login padrão novamente após a instalaçãooh-my-zsh
, que fezzsh
o padrão e, em seguida, atualizarbash
de 3.2.53 para 4.3.30 usando o Homebrew ( por que a Apple está enviando Yosemite com umabash
versão antiga ?).Eu acho que a
SHELL
variável de ambiente reflete, mas não controla o shell de login padrão real para o usuário. Por exemplo, se, por exemplo,bash
fosse o seu padrão e você abrir uma novabash
janela do shell do terminal,$ export SHELL="/bin/zsh"; echo "$SHELL"
isso mostraria,/bin/zsh
mas nenhuma alteração real ocorrerá, porque se você abrir uma nova janela do shell do terminal e o fizer$ echo $0
, verá-bash
($0
contém o nome e o caminho do comando que iniciou a janela do shell, nesse casobash
, e o-
próximo indica que é um shell de logon).Como @ mklement0 apontou, o shell de login padrão real para o usuário é controlado pela
UserShell
propriedade no registro do usuário no banco de dados interno do sistema - isso pode ser consultado e atualizado usando o utilitário de linha de comandodscl
. Essas informações serão passadas para o aplicativo do terminal quando você abrir uma janela do shell.O que
chsh -s /bin/zsh
faz é alterar essaUserShell
propriedade para configurá-lazsh
- você pode verificar isso fazendodscl . -read /Users/$USER/ UserShell
imediatamente depois e veráUserShell: /bin/zsh
. Mas a alteração não é efetuada na janela atual, até que você faça algo comoexec su - $USER
sugerido por @ mklement0, ou até fechar e abrir uma janela do shell.fonte
Tente executar o comando:
chsh -s /bin/zsh
no terminal Mac padrão.fonte