Mac OS X에서 zsh를 로그인 쉘로 실행하는 방법 (iTerm)?


149

zsh가 Mac OS X에서 로그인 쉘로 설정되면 iTerm에서 시작될 때 zsh는 '-zsh'로 시작되었지만 로그인 쉘로 실행되고 있다고 간주하지 않습니다 ( '-'는 arg [0])의 첫 문자는 로그인 쉘로 시작해야 함을 의미합니다.

따라서 로그인 셸을 bash로 설정하면 bash는 $ 0에서 첫 번째 '-'를 인식하고 로그인 셸로 실행하지만 zsh는 그렇지 않습니다.

zsh가 arg [0]에서 '-'를 인식하도록하거나 iLog를 --login 명령 행 인수로 쉘을 실행하게하는 방법이 있습니까?


2
이것이 요청 된 지 오래되었다는 것을 알고 있지만 @Harold Putman의 대답을 받아들이십시오. 질문을 해결하는 유일한 방법입니다.
Craig S. Cottingham

답변:


106

iTerm-> 환경 설정-> 프로파일 탭-> 일반 섹션에서 명령을 다음으로 설정하십시오. / bin / zsh --login

/ bin / zsh-로그인


1
iterm2의 일반 탭에이 옵션이없는 것 같습니다. 로그인 쉘을 변경하지 않고 iterm2에서 달성하는 방법에 대한 아이디어가 있습니까?
Lloyd Dewolf

6
프로필 탭의 일반 탭입니다.
Harold Putman

아하! 일반 탭과 프로파일> 일반이 모두 혼동됩니다.
Lloyd Dewolf

2
또는 제 경우/usr/local/bin/zsh --login
Yar

업데이트 후 쉘을 사용할 수 없게되는 문제를 방지하기 위해 이것을 사용하여 / etc / shells를 편집하지 않고 쉘을 변경합니다.
sal

220
chsh -s $(which zsh)

암호를 묻는 메시지가 표시되지만 설정을 업데이트하면 해당 컴퓨터에서 시작하는 새로운 iTerm / 터미널 세션이 기본적으로 zsh로 설정됩니다.


2
먼저 질문을 읽으십시오. 문제는 기본 쉘을 설정하는 데 있지 않습니다. 문제는 zsh가 로그인 쉘로 시작되었음을 감지하지 못한다는 것입니다.
Ivan Tarasov

1
아 죄송합니다. zsh가 대화식 모드에서 시작되도록 -i 플래그를 사용해 보셨습니까?
Damien Wilson

11
그의 대답은 zsh를 iTerm의 Mac OS X에서 로그인 쉘로 실행하게합니다. 그것은 당신이 묘사하려는 방식으로하는 것이 아닙니다. 그러나 그것은 당신이 (본문이 아닌 제목으로) 질문하는 문제를 해결합니다. 당신이 몸에서 끝내는 질문은 완전히 다른 질문입니다. 이것이 zsh를 로그인 쉘로 실행하는 방법이 아니라 실제 질문이라면 제목에 질문을 바꿔야 할 것입니다.
iconoclast

45
경우 chsh당신에게 "비표준 쉘"같은 것을 알려줍니다, 그것은 당신이에 새 쉘의 경로를 추가하는 것을 의미합니다 /etc/shells. 예를 들어 homebrew에서 설치 한 zsh 버전으로 변경하면이 문제가 발생할 수 있습니다 /usr/local/bin/zsh.
shovavnik

1
chsh -s $(which zsh)올바른 경로를 보장하는 데 사용할 수 있습니다.
Daniel Doezema

56

시스템 환경 설정사용자 및 그룹 창으로 이동 -> 사용자 선택-> 잠금을 클릭하여 변경 (왼쪽 하단)-> 현재 사용자를 마우스 오른쪽 버튼으로 클릭 고급 옵션 ...- > 로그인 쉘 선택 : / bin / zsh 및 확인


3
이것은 나의 하루를 구했다. 나는 OSX 매버릭스에 있습니다.
qed

이것은 brew가 설치 한 것이 아닌 기본 zsh에서 작동합니다.
Imam Bux

19

시작할 때 쉘을 변경하는 명령은 chsh -s <path_to_shell>입니다. mac OS X의 기본 셸은 bin디렉토리 안에 설치 되므로 기본값으로 변경하려면 zsh다음을 사용하십시오.

chsh -s /bin/zsh

다른 버전을 사용 하는 경우 비표준 쉘 메시지를 피하기 위해 zsh해당 버전을 추가해야 할 수도 있습니다 /etc/shells. 당신의 가정 양조의 버전하려는 경우 예를 들어, zsh당신은 추가해야 다음을 /usr/local/bin/zsh상기 파일에있는 하나의 명령으로 할 수있는 sudo sh -c "echo '/usr/local/bin/zsh' >> /etc/shells"다음 실행

chsh -s /usr/local/bin/zsh

또는 하나의 명령으로 모든 작업을 수행하려면 zsh가 이미 설치되어 있으면 이것을 복사하여 붙여 넣으십시오.

sudo sh -c "echo '/usr/local/bin/zsh' >> /etc/shells" && chsh -s /usr/local/bin/zsh

2
나는이 답변을 공감하는 것이 공정하다고 생각하지 않습니다. /etc/shells답 자체에 언급 된 유일한 것입니다 .
heymatthew

1
@heymatthew가 다운 투표 된 이유는 질문에 대답하지 않았기 때문입니다. 완전히 다른 무관 한 질문에 대답했습니다.
Tabitha

17

당신이 쉘 항목 편집 해봤 계정 설정을 .

계정 환경 설정으로 이동하여 고급 설정 대화 상자 의 사용자 계정을 잠금 해제하고 마우스 오른쪽 버튼으로 클릭하십시오 . 쉘은 / bin / zsh 여야하며 호출을 적절하게 편집 할 수 있습니다 (예 : --login 인수 추가).


불행히도, 그것은 작동하지 않습니다 : (이 쉘이 / etc / shells에 나열되어있는 한) chsh를 사용하여 좋아하는 쉘을 설정할 수 있지만 고급 환경 설정 대화 상자 (iTerm 실패)에 쉘에 명령 줄 인수를 추가 할 수 없습니다 쉘을 시작하려면).
Ivan Tarasov

구문의 일부는 OS X에서 변경했지만 요지가 될 기본 쉘을 설정하는 것입니다 / 빈은 / 브라이언 zsh를 위에 표시
engineerDave

7
나는 사랑한다. 나는이 답변을 지금 막 사용해 왔으며 거의 ​​4 년 전에 그것을 쓴다는 것을 깨달았습니다!
Brian Agnew

-2

login유틸리티를 사용하여 로그인 쉘을 작성 하십시오 . 로그인하려는 사용자의 사용자 이름이 Alice 이고 zsh가 설치되어 있다고 가정합니다 /opt/local/bin/zsh(예 : MacPorts를 통해 설치된 최신 버전). iTerm 2에서 환경 설정, 프로파일로 이동하여 설정하려는 프로파일을 선택하고 명령에 입력하십시오 .

login -pfq Alice /opt/local/bin/zsh

man login옵션에 대한 자세한 내용을 참조하십시오 .


이것은 100 % 답이 아닙니다. 예, 기본적으로 생성 한 쉘을 변경하지만 쉘의 "로그인"인스턴스를 생성하는 방법에 대한 답은 아닙니다. 즉, 모든 변수를 처음부터 리소스로 사용하십시오.
Tabitha
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.