Cygwin과 zsh


답변:


45

cygwin을 다중 사용자 환경으로 사용하지 않는 한 (이 경우 chsh표준 환경에서 사용하는 것처럼)

그렇지 않으면 cygwin.bat를 zsh -l -i대신 실행하도록 변경 bash --login -i하면 로그인 쉘로 실행됩니다.  

물론 시작할 때 여러 셸을 실행하려면 .bat파일 집합을 만들어 다른 셸을로드하십시오. ( sh, ksh, csh, fish등)

최신 정보...

chsh유닉스 엔드 에서이 작업을 수행하지 않고이 작업을 수행하는 데 대한 정보를 제공하기 위해 이것을 업데이트해야한다고 생각 했습니다. /etc/passwd파일을 편집하고 발생을 /bin/bash로 바꿉니다 /bin/zsh. (이것은 효과적으로 chsh수행 할 수 있지만, 이렇게하면 모든 사용자 가 한 번에 수행 할 수 있습니다.)


15
cygwin에는 기본적으로 더 이상 / etc / passwd가 없으며 chsh는 더 이상 지원되지 않습니다. 이 답변은 도움이되지 않습니다 (2014 년 4 월 10 일).
Jeff Snider

@THESorcerer 집에 가십시오
ocodo

2
@JeffSnider mkpasswd -l -p "$(cygpath -H)" > /etc/passwd는 새로 생성 된 /etc/passwd파일을 실행 하고 편집 합니다
BrunoLM

17

나는 당신의 질문 권리를 읽는다면, 당신은보다 다른 것을 찾고 알죠 (이, 부여, 그 자체로 꽤 멋지다) 공급.

Cygwin의 현재 버전에는 / etc / passwd 파일 이 없으며 내가 작업하는 시스템에는 제어 할 수없는 도메인 데이터베이스에 Windows 계정 정보가 있습니다. 결과적으로 chsh 는 더 이상 지원되지 않습니다.

또한 bash는 startxwin 스크립트에 하드 코딩되지 않았으며 .bat 파일에도 하드 코딩되지 않았습니다. .bat 파일을 전혀 사용하지 않아도됩니다.

쉘을 변경하는 방법을 검색하면서 mkpasswd 에 대한 조언을 찾았습니다.

믹스에 추가했습니다.

맨 페이지는 다음과 같이 말했습니다.

SYNOPSIS
   mkpasswd [OPTIONS]...

OPTIONS
   Don't use this command to generate a local /etc/passwd file, unless you
   really need one.  See the Cygwin User's Guide for more information.

   -c,--current
          Print current user.

  DESCRIPTION
        The   mkpasswd  program can be used to create a        /etc/passwd
   file.  Cygwin doesn't need  this  file,        because  it  reads  user
   information  from  the Windows account databases,       but you can add
   an  /etc/passwd file, for instance       if your machine is often  dis‐
   connected from its domain controller.

        Note  that this information is static, in contrast to the informa‐
   tion       automatically gathered by Cygwin from  the  Windows  account
   databases.  If        you  change  the user information on your system,
   you'll need to regenerate       the passwd file for it to have the  new
   information.


        For  very  simple needs, an entry for the current user can be cre
   ated       by using the option  -c.

(간격이 왜 "오프"인지 모르겠습니다 ...)

그런 다음 다음 명령을 사용했습니다.

mkpasswd -c | sed -e 'sX / bashX / zshX'| 티 -a / etc / passwd

다음에 Cygwin 터미널을 열면 바로 zsh로 이동합니다.

그리고 그것은 당신이 요구 한 것입니다.


17

방금 bincygwin 디렉토리의 디렉토리를 Windows 경로 환경 변수에 추가 한 후 다음에 대한 단축키를 작성하십시오.

mintty.exe -i /Cygwin-Terminal.ico /bin/zsh --login

또는 기본 cygwin 시작 메뉴 바로 가기를 동일하게 변경하십시오.


2
/bin/zsh대신에 사용해야 했습니다 zsh.
kraiz

1
the bin directory in the cygwin directory to my Windows Path Environment Variable이 변경없이 작동합니다
ruslo

i그것이 로그인 쉘하고하지 않기 때문에 필요하지 않습니다 interactive.
Timo

6

스택 오버플로에 대한 답변에서 복사했습니다 .


Cygwin이 1대해 권장 하는 passwd 파일을 작성하는 대신 /etc/nsswitch.conf를 편집 할 수 있습니다. 다음 줄을 추가하거나 편집하십시오.

db_shell : / usr / bin / zsh

이 방법의 단점은 여러 사용자가있는 경우이 변경 사항이 모든 사용자에게 영향을 미친다는 것입니다. 위쪽 / 위쪽은 간단합니다. 유일한 발견은 Cygwin을 다시 시작해야한다는 것입니다.

당신이 경우에 이 변경 후 사용하는 경우 mkpasswd를, 그것은 로그온 할 수있는 모든 사용자에 대한 새 기본 쉘을 사용합니다.


1 mkpasswd 문서는 다음과 같이 말합니다.

실제로 필요한 경우가 아니면이 명령을 사용하여 로컬 / etc / passwd 파일을 생성하지 마십시오. 자세한 내용은 Cygwin 사용자 안내서를 참조하십시오.

사용자 안내서 에서 확실한 추론을 찾을 수는 없지만 사용자와 그룹이 변경되면 / etc / passwd 및 / etc / group 파일을 재생성해야한다는 언급 외에는 충분하지 않습니다. 이유. 초보자에게는 프로세스가 다소 오류가 발생한다고 말할 수 있습니다.


승인 된 것으로 표시해야합니다.
Arda

4

mintty / Cygwin 터미널에서 사용되는 쉘을 변경하는 데 관심이 있다고 가정하면 먼저 SHELL 환경 변수를 확인한 다음 (현재 존재하지 않는) passwd 파일을 확인한 다음 / bin / sh로 넘어갑니다. 기본적으로.

나는 SHELL 환경 변수를 설정 할 수 있었다 Windows에서/usr/bin/zsh그것은 다른 변경 사항없이 일했다. 전 세계가 아닌 Windows 사용자를 위해 변경했습니다.

환경 변수 설정은 Windows 버전마다 다를 수 있습니다. Windows 제어판에서 "환경"을 검색하십시오. 나를 위해 Windows 7에서는 제어판 → 시스템 → 고급 시스템 설정으로 시스템 속성 제어판 / 대화 상자, 고급 탭, 환경 변수 버튼을 차례로 클릭하여 환경 변수 대화 상자를 표시 한 다음 생성하십시오. 라는 새 사용자 변수 SHELL값으로 /usr/bin/zsh. 그런 다음 다시 확인하고 새로운 박하를 시작하십시오.


이제 이것은 풍성하게 찬성해야합니다! Cygwin의 내부 가공을 망설이지 않고 쉽게 뒤집을 수있는 가장 간단한 방법!
pepoluan

1

방금 찾는 사람에게 도움이되도록이 답변을 추가 할 것이라고 생각했습니다. chere (모든 폴더의 오른쪽 클릭 컨텍스트 메뉴에 "Bash prompt here"옵션을 추가)를 사용하는 경우 다음을 사용하여 zsh ( "Zsh Prompt Here")로 설정할 수 있습니다.

chere -i -t mintty -s zsh

0

IDE Intellij 내부에서 Cygwin 셸을 사용하려면 settings / tools / terminal 내부에서 다음 설정을 사용하십시오

c:\cygwin\bin\zsh.exe -l -i

이것은 새 창을 생성하는 대신 cygwin 쉘을 intellij 안에 포함시킵니다.

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