Mac에 zsh를 설치했습니다. 이제 Bash 대신 기본 셸로 만들고 싶습니다. 그러나 다음 오류가 발생하는 것 같습니다.
$ echo $SHELL
/bin/bash
$ chsh -s /usr/bin/zsh
Changing shell for harshamv.
Password for harshamv:
chsh: /usr/bin/zsh: non-standard shell
Mac에 zsh를 설치했습니다. 이제 Bash 대신 기본 셸로 만들고 싶습니다. 그러나 다음 오류가 발생하는 것 같습니다.
$ echo $SHELL
/bin/bash
$ chsh -s /usr/bin/zsh
Changing shell for harshamv.
Password for harshamv:
chsh: /usr/bin/zsh: non-standard shell
/bin/zsh
됐나요?
답변:
which zsh
이것은 당신에게 zsh에 대한 경로를 제공합니다.chsh -s /bin/zsh
다른 경우 zsh의 경로를 바꿉니다.정답으로 문제가 해결되었을 것입니다.
chsh : / usr / bin / zsh : 비표준 쉘
그 이유 chsh
는 다음에 대한 매뉴얼을 읽어 보면 알 수 있듯이 / etc / shells 파일에 정의 된 쉘만 허용 하기 때문 입니다 chsh
.
chsh는 시스템에있는 모든 실행 파일의 전체 경로 이름을 허용합니다. 그러나 쉘이 / etc / shells 파일에 나열되지 않으면 경고를 발행합니다.
이 문제를 해결하고 zsh를 기본 셸로 만들려면 다음을 수행해야합니다.
$ sudo echo "$(which zsh)" >> /etc/shells
$ chsh -s $(which zsh)
분명히 그것이 zsh
당신의 길에 있다고 가정합니다 . 당신은, 예를 들어, 최신 설치하도록 선택하는 경우이 솔루션은 작동 zsh
과를 brew install zsh
.
편집 (댓글에 대한 ThisIsFlorianK에 감사드립니다) :
셸 설정에 따라 다음과 같은 메시지가 표시 될 수 있습니다 /etc/shells: Permission denied
. 여기 에서이 문제에 대한 정보를 찾을 수 있습니다 .
이 문제를 해결하려면 대신 다음을 사용하십시오.
$ sudo sh -c "echo $(which zsh) >> /etc/shells"
$ chsh -s $(which zsh)
/etc/shells: Permission denied
==>를 않는 대신 : sudo sh -c "echo $(which zsh) >> /etc/shells"
chsh
이유 때문에 기본적으로 사용할 수 있습니다. 동일한 작업을 수행하기 위해 많은 메뉴를 클릭하는 것이 본질적으로 잘못된 것은 아니지만, 이동이 불가능하고 오류가 발생하기 쉬울뿐만 아니라 변경이 발생한 사용자에게 숨겨져 있다는 점에서 오해의 소지가 있습니다.
다음을 수행하여이 작업을 수행 할 수있었습니다.
echo $SHELL
/usr/local/bin/zsh
. 따라서 hombrew가 설치 한 zsh 실행 파일을 선택하기 전에 /etc/shells
sudo 에서 편집 하고 항목을 추가 /usr/local/bin/zsh
해야합니다
chsh -l
출력합니까? (그것이 작동하지 않으면 내용은/etc/shells
무엇입니까?) 이것이 실패하고 경고가 아닌 것이 확실합니까?/usr/bin/zsh
거기에 추가 하면 작동합니까?