A execução do chsh não altera o shell


19

Eu quero mudar meu shell do bash para o zsh.

Tentei executar o seguinte enquanto estava logado como usuário zol:

$ chsh -s /bin/zsh
$ sudo chsh -s /bin/zsh zol
$ su -c 'chsh -s /bin/zsh zol'
# The above all results with:
$ password:
$ chsh: Shell not changed.

# zsh exists in /etc/shells.. 
chsh -l
/bin/sh
/bin/bash
/sbin/nologin
/bin/zsh

O que pode estar errado? Como posso corrigir isso?


Você tentou executar o 'chsh' sem argumentos como zol?
George M

Você está usando algo como ldap / nis etc.?
precisa

Muito mais importante: por que não fornece mais informações? Essa mensagem pode ser boa para um sysop experiente, mas para a maioria das pessoas é absolutamente rude. Estou enfrentando o mesmo problema 5 anos depois, e as pessoas se perguntam por que o linux passou os últimos 20 anos não no desktop.
flurbius

Você esperava que seu shell mudasse instantaneamente? Você altera seu shell de login com chsh, o que significa que você terá que efetuar login novamente.
Kusalananda

Respostas:


17

As modificações na conta do usuário não serão salvas se você tiver aberto o arquivo / etc / passwd (vim / etc / passwd) ao tentar alterar as informações.

Alternativa: tente com usermod (como zol):

$ usermod -s /bin/zsh 

ou

$ sudo usermod -s /bin/zsh zol

Se isso também não funcionar, edite /etc/passwdmanualmente.

sudo vipw
# set zol's shell to /bin/zsh
:wq

6
use em vipwvez de vimdefinir os bloqueios de arquivo apropriados.
Ulrich Dangel

"As modificações na conta do usuário não serão salvas se você tiver aberto o arquivo / etc / passwd" - mas por quê?
Thanatos

Também não funciona. Quando eu reinicio a máquina virtual Linux (centos7), está tudo bem agora!
WeizhongTu

1

Quando executar "chsh -l" se você vir:

/usr/bin/zsh
/bin/zsh

Então use:

chsh -s /usr/bin/zsh

Aviso: Os comandos foram executados no Fedora 25. No ubuntun, a opção "-l" está desativada .


-lé uma opção inválida para mim. Estou no Ubuntu 16.04
byxor

Desculpe, não forneço informações sobre a distribuição onde os comandos funcionam. No meu caso, testei no Fedora 25. Tento no ubuntu e verifico se a opção "-l" está desativada.
lourencoccc

Independentemente disso, chsh -sfuncionou perfeitamente. Obrigado.
byxor

A opção é válida no Manjaro, mas ainda se recusa a alterar o shell.
flurbius

0

Se você vir chsh: Shell not changed., isso pode significar que o shell já foi alterado.

Verifique qual shell está listado:

cat /etc/passwd | grep `cd; pwd`

Se estiver correto, efetue logout e logon novamente para que a alteração entre em vigor.


0

Apenas me deparei com isso. Não importa o que eu fiz, o login e o logoff não mudariam meu shell, mas ele estava listado em / etc / shells e em / etc / passwd.

finalmente me ocorreu: talvez eu esteja logado com outra sessão?

Então eu fiz

# who

e validou que eu tinha de fato outras sessões abertas de outras máquinas:

dom  pts/0        Nov 6 13:53 (10.1.6.121)
dom  pts/1        Nov 5 12:30 (10.1.6.165)
dom  pts/2        Nov 4 12:33 (10.1.6.197)

Eu então fiz:

pkill -KILL -u dom

Eu fui desconectado imediatamente e após o login novamente: Voila! Shell foi alterado

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.