답변:
cygwin을 다중 사용자 환경으로 사용하지 않는 한 (이 경우 chsh
표준 환경에서 사용하는 것처럼)
그렇지 않으면 cygwin.bat를 zsh -l -i
대신 실행하도록 변경 bash --login -i
하면 로그인 쉘로 실행됩니다.
물론 시작할 때 여러 셸을 실행하려면 .bat
파일 집합을 만들어 다른 셸을로드하십시오. ( sh
, ksh
, csh
, fish
등)
chsh
유닉스 엔드 에서이 작업을 수행하지 않고이 작업을 수행하는 데 대한 정보를 제공하기 위해 이것을 업데이트해야한다고 생각 했습니다. /etc/passwd
파일을 편집하고 발생을 /bin/bash
로 바꿉니다 /bin/zsh
. (이것은 효과적으로 chsh
수행 할 수 있지만, 이렇게하면 모든 사용자 가 한 번에 수행 할 수 있습니다.)
mkpasswd -l -p "$(cygpath -H)" > /etc/passwd
는 새로 생성 된 /etc/passwd
파일을 실행 하고 편집 합니다
나는 당신의 질문 권리를 읽는다면, 당신은보다 다른 것을 찾고 알죠 (이, 부여, 그 자체로 꽤 멋지다) 공급.
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로 이동합니다.
그리고 그것은 당신이 요구 한 것입니다.
방금 bin
cygwin 디렉토리의 디렉토리를 Windows 경로 환경 변수에 추가 한 후 다음에 대한 단축키를 작성하십시오.
mintty.exe -i /Cygwin-Terminal.ico /bin/zsh --login
또는 기본 cygwin 시작 메뉴 바로 가기를 동일하게 변경하십시오.
/bin/zsh
대신에 사용해야 했습니다 zsh
.
the bin directory in the cygwin directory to my Windows Path Environment Variable
이 변경없이 작동합니다
i
그것이 로그인 쉘하고하지 않기 때문에 필요하지 않습니다 interactive
.
스택 오버플로에 대한 답변에서 복사했습니다 .
Cygwin이 1 에 대해 권장 하는 passwd 파일을 작성하는 대신 /etc/nsswitch.conf를 편집 할 수 있습니다. 다음 줄을 추가하거나 편집하십시오.
db_shell : / usr / bin / zsh
이 방법의 단점은 여러 사용자가있는 경우이 변경 사항이 모든 사용자에게 영향을 미친다는 것입니다. 위쪽 / 위쪽은 간단합니다. 유일한 발견은 Cygwin을 다시 시작해야한다는 것입니다.
당신이 경우에 할 이 변경 후 사용하는 경우 mkpasswd를, 그것은 로그온 할 수있는 모든 사용자에 대한 새 기본 쉘을 사용합니다.
1 mkpasswd 문서는 다음과 같이 말합니다.
실제로 필요한 경우가 아니면이 명령을 사용하여 로컬 / etc / passwd 파일을 생성하지 마십시오. 자세한 내용은 Cygwin 사용자 안내서를 참조하십시오.
사용자 안내서 에서 확실한 추론을 찾을 수는 없지만 사용자와 그룹이 변경되면 / etc / passwd 및 / etc / group 파일을 재생성해야한다는 언급 외에는 충분하지 않습니다. 이유. 초보자에게는 프로세스가 다소 오류가 발생한다고 말할 수 있습니다.
mintty / Cygwin 터미널에서 사용되는 쉘을 변경하는 데 관심이 있다고 가정하면 먼저 SHELL 환경 변수를 확인한 다음 (현재 존재하지 않는) passwd 파일을 확인한 다음 / bin / sh로 넘어갑니다. 기본적으로.
나는 SHELL 환경 변수를 설정 할 수 있었다 Windows에서 에 /usr/bin/zsh
그것은 다른 변경 사항없이 일했다. 전 세계가 아닌 Windows 사용자를 위해 변경했습니다.
환경 변수 설정은 Windows 버전마다 다를 수 있습니다. Windows 제어판에서 "환경"을 검색하십시오. 나를 위해 Windows 7에서는 제어판 → 시스템 → 고급 시스템 설정으로 시스템 속성 제어판 / 대화 상자, 고급 탭, 환경 변수 버튼을 차례로 클릭하여 환경 변수 대화 상자를 표시 한 다음 생성하십시오. 라는 새 사용자 변수 SHELL
값으로 /usr/bin/zsh
. 그런 다음 다시 확인하고 새로운 박하를 시작하십시오.