Como mudar o shell padrão para ZSH - chsh diz "shell inválido"

36

Instalei o ZSH em uma VM minha, onde o compilei da fonte. A localização do ZSH é /usr/local/bin/zshquando eu executo chsh -s /usr/local/bin/zshele gera chsh: /usr/local/bin/zsh is an invalid shell. Eu também tentei isso com o sudo também. Como posso mudar isso?

Zach Russell
fonte
possível duplicata de Onde altero meu shell?
Mikel
6
@ Mikel, não, essa pergunta é "eu não sei chsh" e não " chshnão está funcionando para mim".
Cjm

Respostas:

47

Adicione zsh a /etc/shells:

command -v zsh | sudo tee -a /etc/shells

Agora você pode usar o chsh para definir o zsh como shell:

sudo chsh -s "$(command -v zsh)" "${USER}"

Consulte esta documentação: Alterando seu shell de login

Biapy
fonte
8

Você precisa adicionar /usr/local/bin/zsha /etc/shells.

Adam Lang
fonte
3

Primeiro, verifique se zshestá listado como um shell válido

cat /etc/shells

Se zshnão estiver listado, instale-o. Por exemplo, se você usarapt

sudo apt-get install zsh

Faça o passo 1 novamente e veja o caminho de zsh. No meu caso, ambos /usr/bin/zshe /usr/zshestá listado. Como @ Stéphane Chazelas mencionado no comentário, se você deseja compilar e instalar o shell a partir do zero, adicione o caminho /etc/shells.

Mude o shell usando

chsh -s /usr/bin/zsh

Na página do manual :

-s, --shell SHELLO nome do novo shell de login do usuário. Definir esse campo como em branco faz com que o sistema selecione o shell de login padrão.

Saia e faça login novamente.

Sat Yam
fonte
Sim, se você instalar o shell como parte de um pacote do SO, o pacote do SO normalmente o adicionará /etc/shells. O ponto aqui é que, se você compilar e instalar o shell manualmente, também precisará adicionar o caminho /etc/shellsmanualmente.
Stéphane Chazelas
Bom ponto. Eu estava pensando em um gerenciador de pacotes como 'apt'. Eu editei a resposta para incluir seu ponto.
Sáb Yam
Isso é essencialmente o que as outras duas respostas já disseram, no entanto.
Jeff Schaller