어쨌든 Windows 용 Git Bash 란 무엇입니까?


61

https://git-scm.com/ 에서 Git 및 Git Bash를 행복하게 사용하고 있습니다 . 자세한 내용은 https://git-for-windows.github.io/ 페이지를 참조 하십시오 .

어제에 문제가 발생하여 rsyncWindows 용 Git Bash에 대해 자세히 알아보기 시작했습니다. Bash 프로그램의 이름조차 확실하지 않다는 것을 깨달았습니다. git-scm 다운로드와 함께 제공되기 때문입니다. 나는 그것을 Windows 용 Git Bash라고 부른다.

로보고에서 "무슨 망할 놈의 배쉬는"내가 읽어 Cygwin에서다른 라는 것은 mysys2 관련이있는 것으로 보인다 mysysGit, 나는에 대한 참조를 보았다 MinGW. 그러나 FAQ에서 민트 티 가 Git Bash의 기본 터미널 이라는 것을 알았 습니다.

Bash 응용 프로그램은 실제로 독립적으로 사용할 수있는 다른 것들 (주로 위에 나열된)의 특별히 선별 된 번들 인 것 같습니다.

기본적으로 * nix 명령 ssh scp cat ls이 Windows 용 Git Bash에서 작동 하는 기초가 무엇인지 알고 싶습니다 .

(좋은 대답은 누군가가 광범위한 구성 요소를 통해 이러한 구성 요소가 어떻게 조화를 이루고 구성 요소에 적합한 단어를 이해하는지 이해하는 데 도움이 될 것이라고 생각하지만 SO 질문 / 답변 형식을 위반하고 싶지는 않습니다.)


여기에 아주 좋은 답을 찾았습니다 힘내 배쉬의 정확한 의미는 무엇입니까?
geneorama

1
구글의 공식 이름 / 사물은 "git bash"라고 생각합니다. 두 단어가 독립적으로 의미가 있기 때문에 따옴표로 묶는 데 도움이됩니다.
geneorama

Reddit에 대한 여기여기 에 대한 좋은 토론 (2017 년부터). 그들은 심지어 내 원래의 rsync질문을 해결합니다!
geneorama

답변:


72

요약

맞습니다. Windows 용 Git Bash는 Windows 용 으로 bash컴파일 된 것이 아닙니다 . 그것은 포함 패키지의 bash(A 인 명령 행 쉘 )과 같은 다른 별도 * 괜찬아 유틸리티 모음 ssh, scp, cat, findWindows 용 컴파일 (쉘을 사용하여 실행) 등, 새로운 명령 줄 인터페이스 터미널 창을 호출했습니다 mintty.

간단히 말해서

Windows에서는을 사용 ipconfig /all하거나 format G:사용하여 명령을 실행할 수 있습니다 cmd.exe. 이 명령은 및 아래 C:\Windows\system32에 저장된 실제 실행 파일입니다. 두 가지와 분리되어 있으며 사용자 요청에 따라로드하고 실행합니다.ipconfig.exeformat.comcmd.exe

ssh, scp, cat,을 find사용하여 실행하는 bash똑같은 방식으로. Windows와 * nix는 시스템 파일 구조가 다르게 구성 되므로 일반적으로 * nix 시스템이 /usr/bin아닌 아래에 저장됩니다 C:\Windows\system32.

Windows 용 Git Bash의 경우 이러한 프로그램은 Git 설치 폴더에 있습니다.이 폴더 C:\Program Files\Git\usr\bin는 에뮬레이트 된 Linux 환경의 아래에 /usr/bin있습니다.

cmd.exe* nix 에서만 실행할 수있는 것처럼 다른 시스템 유틸리티 없이도 많은 작업을 수행 할 수없는 것처럼 Windows에서 Bash를 실행할 수있는 것 역시 유용하지 않습니다. 즉, 사용 가능한 소프트웨어 패키지를 만들려면 이러한 모든 추가 명령을 Bash와 함께 번들로 제공해야합니다.

세부 사항 : Windows의 POSIX 애플리케이션

일반적으로 이러한 추가 명령은 Windows가 아닌 * nix 시스템에서 찾을 수 있습니다. 이는 Win32 API (Windows가 사용하는)가 아니라 POSIX 프로그래밍 API (* nix가 사용하는 것)에 대해 프로그래밍 되었기 때문입니다. POSIX API 설명서는 공개적으로 제공되므로 일부 사람들은 Windows를 포함한 다른 시스템으로 이식했습니다. POSIX API / 라이브러리의 Windows 구현은 Cygwin및에서 제공합니다 MSYS.

이것은 Wine 프로젝트 가 하는 것과 비슷 하지만 Wine과 같이 Windows-> POSIX 대신 POSIX-> Windows를 변환합니다.

박하

minttycmd.exe기본 Windows 명령 행 창인에는 대부분의 * nix 시스템에서 일반적으로 사용 가능한 몇 가지 중요한 기능이 없기 때문에이 포함 됩니다. 대부분의 경우 mintty명령을 실행하는 것이 더 나은 선택이지만 (특히 Windows 용 Git Bash 패키지와 함께 제공되는 유틸리티) 경우에 따라 Windows 시스템 응용 프로그램이 더 잘 작동 할 수 있습니다 cmd.exe.


1
내 질문의 대부분은 프로젝트 FAQ : github.com/git-for-windows/git/wiki/FAQ 에서 답변 되며 Google 그룹 groups.google.com/forum/# 에서 더 구체적인 정보를 찾을 수 있습니다 ! 포럼 / git-for-windows .
geneorama

@geneorama이 답변이 실제로 정확하고 유익하며 유용한 경우이 답변을 받아들이는 데 문제가되지 않습니다.
walen

1
@geneorama 그 빈칸을 채우는 것이 당신의 의도일지도 모르지만 그것은 당신이 한 질문이 아닙니다. 귀하의 게시물 제목은 "어쨌든 Windows 용 Git Bash 란 무엇입니까?" , 그리고 본문에있는 유일한 질문은 "* nix 명령 ssh scp cat ls이 Windows 용 Git Bash에서 작동하는 것과 같은 기초가 무엇인지 알고 싶습니다 ."입니다. . Pabru의 게시물은 두 질문에 모두 잘 대답하며 동일한 질문이있는 사람에게는 올바른 답변입니다 (명시 된 바와 같이), 수락하면 다른 사용자를 돕고 있습니다. 문제에 대한 새로운 질문을 게시하려고 했습니까 rsync?
walen

4
@walen이 SO 및 관련 사이트에 질문을 게시하는 것은 너무 불쾌하여 더 이상 질문을 게시하지 않을 것입니다.이 시험은 실제로 테스트였으며 내 감정을 확인했습니다. 질문을 간결하게 유지하고 나의 연구를 문서화하기 위해 (그리고 하루 종일 연구를하면서), 실제 질문을 생략 한 것 같습니다. 내가주의 깊게 편집 할 때 사람들은 연구의 부족으로 간결함을 취하는 것처럼 보입니다. 질문을 너무 자세하게하면 무시됩니다. 어쨌든, 그 질문은 비판을받습니다 (몇 개의 명백한 무례한 의견이 삭제되었습니다). 나의 "유명한"질문조차도 처음에는 크게 줄어 들었습니다.
geneorama

1
@geneorama 위안이 있다면 대답을 읽기 전에 git bash에 대해 더 많이 배우는 데 도움이되었습니다. 그러나 나는 당신이 무엇을 의미하는지 이해합니다.
walen

4

배경

나는 OP입니다. 나는 원래 내가 사용하고있는 것에 대한 공식적인 이름을 알고 싶었습니다.

이름이 "Git Bash for Windows"라고 생각합니다. 불행히도 전체 답변은 복잡합니다. 왜냐하면이 것은 실제로 많은 것이기 때문입니다.

2016 년 최고의 답변은 원래 도움이되지 않았지만 크게 편집되어 점점 더 도움이되었습니다. 아직도, 그것은 내 원래의 질문 중 일부를 그리워합니다.

시작 : msysgit

실제로 시작은 아마 MSYS이지만 실제로 는 그렇습니다 MSYS2. "msysgit"이라는 용어는 XYZ가 잘못되었을 때 무슨 일이 일어나고 있는지 알아 내기 위해 검색에 넣는 좋은 용어입니다. "@ * #!의 모든 autocrlf 설정이 저장되어 있습니까?!?!?!?"

msysgit 프로젝트 의 README ( https://github.com/msysgit/msysgit )는 구성 요소 간의 관계를 설명합니다.

Windows 용 msysGitGit 의 관계

Git for WindowsWindows 에서 Git을 실행하기위한 최소 환경을 설치하는 소프트웨어 패키지입니다. 여기에는 Perl 인터프리터와 Git 실행 파일 및 해당 종속성이있는 Bash (Unix 유형 쉘)가 제공됩니다.

한편, msysGit은 Windows 용 Git을 빌드 할 수 있는 빌드 환경 을 설치하는 소프트웨어 패키지 입니다. 가장 쉬운 방법은 net installer 를 통해 설치하는 것 입니다.

MSYS와 MinGW의 차이점

는 MinGW 프로젝트 의 목표는 GNU C 컴파일러를 사용하여 어떤 POSIX 층 네이티브 Windows 바이너리를 컴파일하는 방법을 제공하는 것입니다.

그러나 적어도 Bash에는 POSIX 계층이 필요합니다 (주로 fork()Windows 에서 호출 이 없기 때문에 ). 따라서 MSYS ( 최소 시스템 )가 투입되어 Windows에서 Bash (및 Perl) 기능을 제공하는 데 필요한 최소 시스템을 제공합니다.

따라서 MSYS는 Bash와 Perl에서만 사용되지만 해당 환경 내에서 컴파일 된 것은 사용하지 않는 POSIX 계층 (이전 버전의 Cygwin 기반)과 함께 제공됩니다.

BTW, 전체 README가 삭제되는 경우를 대비하여 gist에 복사했습니다 .

터미널 창 : mintty

Windows 용 Git Bash의 다른 부분은 실제 Windows 명령 행입니다. 고맙다는 것이 존재하지만 Google에 필요한 것은 아닙니다.

MSYS2에 대한 참조

그들의 위키는 MSYS2 환경에 대한 자세한 내용을 담고 있습니다 : https://github.com/msys2/msys2/wiki

소개에서이 부분은 내 원래 질문과 가장 관련이 있습니다.

MSYS2는 세 개의 서브 시스템으로 구성 및 해당 패키지 저장소, msys2, mingw32,와 mingw64.

이 토론은 매우 유용합니다 : https://sourceforge.net/p/msys2/discussion/general/thread/dcf8f4d3/#8473/588e


1
"따라서 MSys 는 이전 버전의 Cygwin 기반 POSIX 계층과 함께 제공됩니다 ..."-Cygwin에 git을 설치하면 'Git Bash for Windows'가 중복되어 제거 할 수 있다고 결론을 내릴 수있었습니다.
다니엘 Sokolowski
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.