쉘을 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