chshを実行してもシェルは変更されません。

chshを実行してもシェルは変更されません。

シェルをbashからzshに変更したいです。

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

何が間違っている可能性がありますか?どうすれば解決できますか?

答え1

情報を変更しようとしているときに/ etc / passwdが開いていると(vim / etc / passwd)、ユーザーアカウントの変更は保存されません。

代替案: usermod (例えば zol) を試してみてください。

$ usermod -s /bin/zsh 

または

$ sudo usermod -s /bin/zsh zol

それでも機能しない場合は、/etc/passwd手動で編集してください。

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

答え2

私はこれを見つけました。私が何をしても、ログインとログアウトは私のシェルを変更しませんが、/etc/shellsと/etc/passwdにリストされています。

ついにふと気づきました。私がすでに別のセッションにログインしているのではないでしょうか?

だから私はそうでした。

# who

別のコンピュータで別のオープンセッションがあることを確認しました。

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)

それから私は次のことをしました。

pkill -KILL -u dom

私はすぐにログアウトして再びログインしました。チャジャン!シェルが変更されました

答え3

これが表示されたら、chsh: Shell not changed.シェルが変更されたことを意味できます。

どのシェルがリストされているかを確認します。

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

正しい場合は、ログアウトしてもう一度ログインして変更を適用してください。

答え4

から変更/etc/passwd

zsh(manjaroのデフォルト)の使用にはいくつかの問題があり、これを使用してbashに戻っています。

[infinito@manjaro ~]$ grep infinito /etc/passwd
infinito:x:1000:1000:Sergio N:/home/infinito:/bin/bash      <---here

関連情報