
루트로 로그인한 상태에서 zsh를 기본 쉘로 설정할 수 있나요? chsh -s /bin/zsh
인증을 위해 루트 비밀번호를 사용했지만 실패했습니다 .
답변1
비결은 zsh를 사용하도록 대화형 루트 쉘을 설정하고 /bin/sh를 계속 사용하도록 비대화형 쉘을 그대로 두는 것입니다.
이는 다른 응답에서 설명한 것처럼 여전히 "예상" 문제로 이어질 수 있지만 적어도 비대화형 프로세스를 날려버리지는 않을 것입니다.
/root/.bashrc 끝에 다음을 추가합니다.
if [ ! -z "$PS1" ]; then
exec /bin/zsh $*
fi
답변2
일반적으로 /bin/sh에서 루트 쉘을 변경하는 것은 좋지 않습니다. 여전히 UID는 0이지만 zsh를 쉘로 사용하는 다른 계정(예: zroot)을 추가하는 것이 좋습니다. 그러나 질문에 답하기 위해 루트로 로그인하는 경우에는 를 사용할 필요가 없습니다 sudo
. 그냥 사용
chsh -s /bin/zsh root
root
chsh의 요청에 대한 응답으로 비밀번호를 제공합니다 . '루트'를 명시적으로 지정하는 것이 좋습니다.
'fred'로 로그인하는 경우 다음을 사용하세요.
sudo -i
비밀번호 요청에 fred's
비밀번호로 응답하세요. 그러면 루트 쉘이 제공됩니다. 처음에 루트로 로그인했던 것처럼 진행하세요.
/bin/zsh가 /etc/shells에 나열되어 있는지 확인하십시오.
답변3
아마도 루트가 있어서 실행하는 것을 잊었을 것입니다. 다음 명령을 실행합니다.
$ sudo chsh -s /bin/zsh
답변4
이 용도로 일반 편집기로 passwd 파일을 편집하는 것은 권장되지 않습니다.
vipw
그리고 쉘을 zsh로 변경합니다. 솔직히 루트 쉘을 변경하려는 이유를 이해하지 못합니다. 루트 계정은 관리 작업에만 사용해야 하며 일반 작업에서는 권한이 없는 사용자를 사용합니다. 그런 다음 다른 tty에 로그인을 시도하고(중요함) 현재 tty와의 연결을 끊습니다. 작동하면 새 쉘을 볼 수 있습니다. zsh를 즉시 사용하려면 zsh를 입력하기만 하면 됩니다. 결론
I want to use my new shell now = type zsh
I want to use my new shell + change = chsh -s or vipw
ps= zsh가 해당 경로(/bin /sbin..)에 설치되어 있지 않고 루트로 단일 사용자 로그인을 수행해야 하는 경우 쉘을 찾을 수 없기 때문에 작동하지 않습니다. 이는 /usr로 구분된 시스템에서도 발생할 수 있습니다. 루트에서/다른 lvm 또는 파티션에 마운트됨