シェルを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