2014-03-12 3 views
10

저는 Cygwin을 오랫동안 사용해 왔습니다. 이제 bash에서 물고기로 바 꾸고 싶습니다. 모두 chsh -s /usr/bin/fish을 사용해야한다고 말하고 있지만 어떤 이유인지 모르면 chsh이 작동하지 않습니다. 내 Cygwin.bat 파일을 수정하려고해도 내 /etc/passwd 파일이 변경되지 않습니다.Cygwin의 기본 셸 설정

나는 실제로 무슨 일이 벌어지고 있는지 이해하지 못합니다. 누군가 나를 도울 수 있을까요?

+0

/usr/bin/fish를/etc/shells에 추가 했습니까? –

+0

내가 그랬고, 작동하지 않았다. – Alex

답변

6

나는 임의로 같은 문제를 만났으며, 이제는 내 해결책을 제공합니다. passwd 파일에 수동으로 (mkpasswd)

$mkpasswd > /etc/passwd 

2 변경 기본 쉘 mintty.exe

1 빌드의 passwd 파일에 의해

0- 열기 cygwin

$vim /etc/passwd 
user:*:1976XX:1971XX:U-user\user,S-1-5-21-XXXX:/home/user:/bin/fish 

3 다시 시작 mintty.exe

+0

매우 유용합니다! 감사 –

2

저는 아닙니다. 이 솔루션의 '적절한'방법은 확실하지만 내 .bashrc 파일의 하단에 /usr/bin/zsh; exit을 추가했습니다. 선택한 쉘 경로로 /usr/bin/zsh을 사용할 수 있습니다. 지금까지 잘 작동하는 것 같습니다. 대신에 /의

13

한번에 편집의 /etc/nsswitch.conf etc/passwd에

대신의 passwd를 파일, Cygwin에서 recommends against1, 당신은 할 수 edit /etc/nsswitch.conf를 작성. 다음 줄을 추가 또는 편집하십시오.

 
db_shell: /usr/bin/fish 

이 방법의 아래쪽/위쪽면은 여러 사용자가있는 경우이 변경 사항이 모두 영향을줍니다. 위로/위로 측면 그것은 죽은 간단합니다. 유일한 포착은 Cygwin을 다시 시작해야한다는 것입니다.

이 변경 후에 을 수행하면을 사용하면 mkpasswd을 사용하면 로그온 할 수있는 모든 사용자에 대해 새 기본 셸이 사용됩니다.


참조

1mkpasswd 문서이 말한다는 :

당신이 정말로 하나 필요하지 않는 한, 로컬/etc/passwd 파일을 생성하려면이 명령을 사용하지 마십시오. 자세한 정보는 Cygwin 사용자 가이드를 참조하십시오.

정말 내가 가정 사용자 및 그룹을 변경 한 경우에는 /etc/passwd/etc/group 파일을 재생해야합니다 언급, 이외의 user's guide의 모든 고체 이유를 찾을 수 없습니다

은 충분히 괜찮은 이유 . 그 과정은 초보자들에게는 다소 오류가 많다고 말할 수 있습니다.

4

SuperUser에 대한 답변이 더 간단합니다. Windows에서 SHELL 환경 변수를 설정하십시오. 원하는 쉘로 설정하십시오 (예 :/bin/tcsh)와 새로 출시 된 쉘이이를 사용해야합니다.

환경 변수를 설정하려면 :

  1. 이동 "시스템"컨트롤 패널에 (마우스 오른쪽 단추로 클릭하고 시작 메뉴에서 선택 "시스템") "고급 시스템 설정"에
  2. 클릭 왼쪽에 -side column
  3. "시스템 속성"창이 뜨면 "환경 변수 ..."버튼을 클릭하십시오.
  4. "사용자 변수"또는 "시스템 변수"상자 (자신이나 모든 사용자에게 영향을주기 위해 변경) "새로 만들기 ..."버튼을 클릭하십시오.
  5. "변수 이름"상자에 "SHELL"을 입력하고 "변수 값"상자에 원하는 쉘에 경로 (Cygwin 파일 시스템에 상대적인 경로)를 입력하십시오.
  6. 변경 내용을 저장하려면 열려있는 세 창에서 확인을 클릭하십시오. ""c:\cygwin64\bin\fish.exe" --login -i" (변경하십시오 : 당신이 ConEmu을 통해 Cygwin에서 실행하는 경우
1

내가 가장 쉬운 방법 대신 기본 쉘의 물고기 (설정 -> Startup-> 작업)를 실행하는 명령 라인을 교체하는 것입니다 발견 그에 따라 cygwin 폴더의 경로)