MacOSX에서 ZSH 기본 셸 만들기 [닫기]


99

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

1
무엇을 chsh -l출력합니까? (그것이 작동하지 않으면 내용은 /etc/shells무엇입니까?) 이것이 실패하고 경고가 아닌 것이 확실합니까? /usr/bin/zsh거기에 추가 하면 작동합니까?
Etan Reisner 2015-06-24

1
chsh : 옵션에는 인수가 필요합니다.-l 사용법 : chpass [-l 위치] [-u authname] [-s shell] [user]
Harsha MV

/ bin / bash / bin / csh / bin / ksh / bin / sh / bin / tcsh / bin / zsh
Harsha MV

뭐가 잘못 /bin/zsh됐나요?
jxh

1
이제 기본 셸을 zsh로 변경하는 공식적인 방법이 있습니다. Apple 문서 "Zsh를 Mac의 기본 셸로 사용" support.apple.com/en-ca/HT208050
Anthonyeef

답변:


86

간단한 3 단계 :

  1. which zsh이것은 당신에게 zsh에 대한 경로를 제공합니다.
  2. 그런 다음 chsh -s /bin/zsh다른 경우 zsh의 경로를 바꿉니다.
  3. 컴퓨터를 다시 시작하십시오.

예이. 요세미티 특정입니까?
Harsha MV

2
아니, 난 그냥 :) 귀하의 정보를했다, 생각하지 않는다
쿠엔틴 페레즈

8
문제 를 해결 하기 위해 추가 하라는 동일한 이전 질문에 대한 또 다른 관련 의견 . /usr/bin/zsh/etc/shells
Brice 2016

그것은 완벽하게 작동합니다
Olkunmustafa

1
/ etc / shells에 따라 설정하십시오! '$ nano / etc / shells'로 zsh 경로를 찾으십시오. 내 것은 10.12.2에 / usr / bin / zsh 대신 / bin / zsh에있었습니다
oikonomopo

188

정답으로 문제가 해결되었을 것입니다.

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)

4
이것은 제 생각에 받아 들여진 대답보다 더 정확합니다. zsh가 / usr / bin / zsh에 설치되어 있다고 가정하면 다른 답변은 작동하지 않습니다. 기본적으로 Apple은 / bin / zsh에 zsh를 설치하기 때문에 OP를 위해 일했습니다. 그러나 homebrew의 zsh (/ usr / local / bin / zsh 아래에 설치됨)를 사용하려면 이것이 적절한 방법이 될 것입니다.
2017-07-11

"bash : / etc / shells : Permission denied"가 있습니다. 시스템 환경 설정을 통한 대답이 저에게 효과적이었습니다.
Ricardo Stuven

44
당신은 얻을 경우 /etc/shells: Permission denied==>를 않는 대신 : sudo sh -c "echo $(which zsh) >> /etc/shells"
ThisIsFlorianK

1
stackoverflow.com/a/44547726/99834- 시스템 파일을 엉망으로 만들지 않고 작동했습니다. 누락 된 것은 동일한 작업을 수행하는 CLI 버전입니다.
sorin

@sorin이 무의미한 기물 파손 또는 실제로 답변에 문제가 있습니까? 시스템 파일은 어떤 이유로 편집 가능한 텍스트 파일입니다. chsh이유 때문에 기본적으로 사용할 수 있습니다. 동일한 작업을 수행하기 위해 많은 메뉴를 클릭하는 것이 본질적으로 잘못된 것은 아니지만, 이동이 불가능하고 오류가 발생하기 쉬울뿐만 아니라 변경이 발생한 사용자에게 숨겨져 있다는 점에서 오해의 소지가 있습니다.
dangom

52

다음을 수행하여이 작업을 수행 할 수있었습니다.

  1. 시스템 환경 설정으로 이동
  2. "사용자 및 그룹"을 클릭하십시오.
  3. 잠금을 클릭하여 변경하십시오.
  4. 현재 사용자를 마우스 오른쪽 버튼으로 클릭-> 고급 옵션
  5. 드롭 다운에서 로그인 셸을 / bin / zsh로 변경합니다.
  6. 새 터미널을 열고 다음으로 확인하십시오. echo $SHELL

4
homebrew를 통해 zsh를 설치하면 zsh가 /usr/local/bin/zsh. 따라서 hombrew가 설치 한 zsh 실행 파일을 선택하기 전에 /etc/shellssudo 에서 편집 하고 항목을 추가 /usr/local/bin/zsh해야합니다
Baldy

7

내 작업 MacBook에서 다음을 수행해야했습니다.

sudo chsh -s /usr/local/bin/zsh my_user_name

그런 다음 .bash_profile터미널을 열 때마다 터미널을 z-shell로 전환 하는 파일을 만들어야했습니다.

touch ~/.bash_profile
echo 'export SHELL=$(which zsh)' >> ~/.bash_profile
echo 'exec $(which zsh) -l' >> ~/.bash_profile

마지막 아이디어는 여기 에서 빌려온 입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.