zsh가 루트의 기본 셸로 설정되어 있습니다.

zsh가 루트의 기본 셸로 설정되어 있습니다.

루트로 로그인하면 zsh를 기본 쉘로 설정할 수 있습니까? 이렇게 하고 chsh -s /bin/zsh루트 비밀번호를 사용하여 인증했지만 실패했습니다.

답변1

한 가지 비결은 zsh를 사용하도록 대화형 루트 셸을 설정하고, /bin/sh를 계속 사용하도록 비대화형 셸을 그대로 두는 것입니다.

이로 인해 다른 응답에 설명된 "예상" 문제가 여전히 발생할 수 있지만 최소한 비대화형 프로세스는 중단되지 않습니다.

/root/.bashrc 끝에 다음을 추가합니다.

if [ ! -z "$PS1" ]; then
    exec /bin/zsh $*
fi 

답변2

일반적으로 루트 셸을 /bin/sh에서 변경하는 것은 좋은 생각이 아닙니다. 예를 들어 UID가 여전히 0인 zroot와 같은 다른 계정을 추가하는 것이 좋지만 zsh를 셸로 사용하는 것이 좋습니다. 그러나 질문에 답하기 위해 루트로 로그인한 경우에는 를 사용할 필요가 없습니다 sudo.

chsh -s /bin/zsh root

rootchsh의 요청에 따라 비밀번호를 제공하십시오. "루트"를 명시적으로 지정하는 것이 좋습니다.

"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..)에 설치되어 있지 않고 단일 사용자 로그인에 루트를 사용해야 하는 경우 쉘을 찾을 수 없기 때문에 작동하지 않습니다. 이는 / Mount from에서도 발생할 수 있습니다. root/를 다른 lvm 또는 usr 분리 시스템의 파티션으로

관련 정보