chsh는 $ SHELL을 변경하지 않습니다


9

$SHELLOSX의 iTerm 앱에서 가치를 변경하는 데 어려움이 있습니다. iTerm은에서 시작 /bin/zsh하지만의 가치 $SHELL는 바뀌지 않는 것 같습니다.

내가 한 것:

  1. /bin/zshiTerm의 구성 창에서 와 같이 "명령"이 변경되었습니다 .
  2. chsh쉘을로 변경하기 위해 실행 되었습니다 /bin/zsh.
  3. 확인 된 iTerm이에서 시작되었습니다 /bin/zsh

참고 # 1 : OSX의 주식 터미널 앱 "Terminal.app"에서 :

echo $SHELL
/bin/zsh

참고 # 2 : OSX의 인기있는 터미널 앱인 "iTerm.app"에서 :

$ echo $SHELL
/bin/bash

$ echo $USER
$ melvkim

$ chsh -s /bin/zsh
Changing shell for melvkim.
Password for melvkim:
chsh: no changes made

1
봤어 /etc/shells? 매뉴얼에는 사용자가 지정한 쉘이 해당 파일에 없으면 표준 쉘로 간주되지 않는다고 명시되어 있습니다.
밥 달글리쉬

답변:


5

문제는 "iTerm"앱이 쉘과 충돌하는 설정이었습니다. 이를 해결하기 위해 iTerm 환경 설정 창에서 "로그인 쉘"명령을 재설정했습니다.

iTerm.app-> 환경 설정-> 프로파일-> 일반-> 명령-> "로그인 쉘"클릭

그런 다음 chsh로 수정했습니다 /bin/zsh.

문제를 재현하려면 ( /bin/bash/로그인 쉘이인데도 $ SHELL을 설정하여 /bin/zsh) "iTerm"설정을 "Command : / bin / zsh /"로 다시 변경해야했습니다.


1

-s에 대한 플래그 chsh만을 시도는 쉘을 변경하고, 아마 오픈 디렉토리로 인해 실패합니다 : 일반적인 UNIX 시스템 'chsh 명령'을 수정하는 것입니다 /etc/passwd항목을. 그러나 나는 chsh인수없이 실행할 수 있었기 때문에 편집자와 다음 정보를 얻었습니다.

# Changing user information for nevin.
# Use "passwd" to change the password.
##
# Open Directory: /Local/Default
##
Shell: /bin/tcsh
Full Name: Nevin Williams
Office Location:
Office Phone:
Home Phone:

"Shell :"항목을 /bin/zsh에서 편집 할 수 있었고 이후 터미널 창이 Z-shell 프롬프트로 열립니다.


나는 chsh인수없이 시도했다 . 아직 운이 없다. 변수는 변하지 않습니다. 실제로 편집기가로드되면이 표시 /bin/zsh됩니다.
melvynkim

편집기를 사용하여 쉘을 변경하십시오. / bin / tcsh에서 / bin / zsh로 변경 한 화면을 캡처했습니다. bonmot.ca/~nevin/chsh.mov
네빈 윌리엄스

스크린 캐스트를 게시하여 시간을내어 주셔서 감사합니다. 귀하의 솔루션은 다른 터미널 에뮬레이터에서 작동해야하지만 $SHELLiTerm 을 바꾸는 데 아프지 않았습니다 . 자세한 내용은 내 답변을 참조하십시오 .. 감사합니다!
melvynkim

1

여기 A와 관련하여 @ mklement0 [게시 한 우수한 설명 및 솔루션에 대한 bash업그레이드 문제.

내 시스템 (OS X 10.10.1)에서 이와 반대의 문제가 발생했습니다. bash설치 후 기본 로그인 셸을 다시 만들고 기본값 oh-my-zsh을 만든 zsh다음 bashHomebrew ( Apple에서 Yosemite를 이전 bash버전 으로 제공하는 이유는 무엇입니까?).

SHELL환경 변수 가 사용자의 실제 기본 로그인 쉘을 반영하지만 제어 하지는 않는다고 생각합니다 . 예를 들어, 말, 경우 bash기본이고 새로운 열 bash터미널에서 쉘 창을 다음 $ export SHELL="/bin/zsh"; echo "$SHELL"보여줄 것입니다 /bin/zsh하지만 당신은 터미널에서 새로운 쉘 창을 열고 할 경우 때문에 실제 변화가 발생하지 않습니다 $ echo $0당신은 볼 것이다 -bash( $0이름과 경로를 포함 쉘 창을 시작한 명령의 경우 (이 경우 bash), 그 -옆에 로그인 쉘임을 나타냅니다).

@ mklement0이 지적한 것처럼 사용자의 실제 기본 로그인 셸 UserShell은 시스템 내부 데이터베이스의 사용자 레코드 속성에 의해 제어됩니다. 이것은 명령 줄 유틸리티를 사용하여 쿼리하고 업데이트 할 수 있습니다 dscl. 이 정보는 쉘 창을 열 때 터미널 앱으로 전달됩니다.

chsh -s /bin/zshUserShell속성을 변경 하여 설정하는 것은 무엇입니까? 나중에 즉시 zsh수행 dscl . -read /Users/$USER/ UserShell하여 확인할 수 있습니다 UserShell: /bin/zsh. 그러나 @ mklement0에서 제안한 것과 같은 작업을 수행 하거나 쉘 창을 닫았다가 열 때까지 현재 창에서 변경 사항이 적용 되지 않습니다exec su - $USER .


0

chsh -s /bin/zsh기본 Mac 터미널에서 다음 명령을 실행하십시오 .


1
OP와 다른 점은 무엇입니까?
JMY1000

@ JMY1000 iTerm에서 해당 명령을 실행하려고하면 변경 사항이 반영되지 않습니다. Mac의 기본 터미널에서 실행하여 작동시킬 수 있어야합니다.
mohitmayank 2012
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.