https://git-scm.com/ からGitとGit Bashを使っています。ここでより多くの情報があるページがあります: https://git-for-windows.github.io/ 。
昨日私はrsync
で問題に遭遇しました、そして私はWindows用のGit Bashをより深く掘り始めました。私は、Bashプログラムの名前がわからないことに気付きました。それは、git-scmダウンロードにバンドルされているだけだからです。私はそれをGit Bash for Windowsと呼んでいますが、これは妥当と思われます。
"Git Bashとは何か"を見ていくうちに、私は Cygwin と の違い について読みました。 - ) mysys2 と呼ばれるもの。これはmysysGit
に関連しているようで、私はMinGW
への参照を見ました。しかし、それから私はFAQで、 mintty がGit Bashのデフォルトの端末であることを見ました。
Bashアプリケーションは実際には独立して利用可能な他のもの(大部分は上記にリストされている)の特別にまとめられたバンドルであるようです。
基本的に、Git Bash for Windowsでssh
scp
cat
ls
のような* nixコマンドが機能するための基礎が何であるかを知りたいですか?
(良い答えは、これらのコンポーネントがどのように組み合わされてそのコンポーネントの正しい単語を理解するのかを幅広いストロークで理解するのに役立ちますが、私はSO質問/回答フォーマットを破りたくありません。 )
あなたは正しい、Windows用Git BashはWindows用にコンパイルされたbash
だけではありません。 bash
(これは コマンドラインシェル )とその他のコレクションを含むパッケージです。 Windows用にコンパイルされたssh
、scp
、cat
、find
、およびその他のような別の* nixユーティリティ、およびmintty
と呼ばれる新しいコマンドラインインターフェースターミナルウィンドウ。
Windowsでは、ipconfig /all
を使用してformat G:
やcmd.exe
のようなコマンドを実行することができます。これらのコマンドは、C:\Windows\system32
およびipconfig.exe
ファイルとして格納されているformat.com
の下の実際の実行可能ファイルです。 cmd.exe
は両方とも独立しており、ユーザーの要求に応じてそれらをロードして実行します。
ssh
、scp
、cat
、find
は、bash
を使用してまったく同じ方法で実行されます。 Windowsと* nixではシステムファイル構造が異なっているため、これらは通常* nixシステムの/usr/bin
ではなくC:\Windows\system32
の下に格納されます。
Git Bash for Windowsの場合、これらのプログラムはGitのインストールフォルダー:C:\Program Files\Git\usr\bin
にあります。これは、エミュレートされたLinux環境の/usr/bin
にもあります。
* nixでcmd.exe
を実行できるだけでは、他のシステムユーティリティなしでできることは多くありません。WindowsでBashを実行できるだけではあまり役に立ちません。これは、使用可能なソフトウェアパッケージを作成するために、これらすべての追加コマンドをBashと一緒にバンドルする必要があることを意味します。
通常、これらの余分なコマンドは、Windowsではなく* nixシステム上にあります。これは、(Windowsが使用するものである)Win32 APIではなく、POSIXプログラミングAPI(* nixが使用するもの)に対してプログラムされているためです。 POSIX APIドキュメントは公開されているので、Windowsを含む他のシステムに移植している人もいます。 POSIX API /ライブラリのWindows実装は、Cygwin
およびMSYS
によって提供されます。
これは Wineプロジェクト の動作に似ていますが、WineのようにWindows-> POSIXではなくPOSIX-> Windowsに変換されます。
デフォルトのWindowsコマンドラインウィンドウであるcmd.exe
には、ほとんどの* nixシステムで通常利用可能ないくつかの重要な機能が欠けているため、mintty
が含まれています。ほとんどの場合、mintty
はコマンドの実行に適しています(確かにGit Bash for Windowsパッケージに付属のユーティリティには適しています)が、Windowsシステムアプリケーションがcmd.exe
でうまく動作する場合もあります。
私はOPです。私はもともと私が使っていたものの正式な名前を知りたいだけでした。
今私はその名前が "Git Bash for Windows"だと思います。残念ながら、完全な答えは複雑です。これは実際にはたくさんのことです。
2016年からのトップの答えはもともと私には役に立ちませんでしたが、それはかなり編集され、ますます役に立つようになりました。それでも、それは私の最初の質問のいくつかを逃します。
msysgit
実は、始まりはおそらくMSYS
ですが、実際はMSYS2
です。 「msysgit」という用語は、XYZが失敗したときに何が起きているのかを突き止めるための検索に使用するのに適した用語です。 「@ *#!のすべてのautocrlf設定はどこに保存されていますか?!?!?!?」など
MsysgitプロジェクトのREADME( https://github.com/msysgit/msysgit )に、コンポーネント間の関係が説明されています。
msysGitとGit for Windowsの関係
Windows用Git は、GitをWindows上で実行するための最小限の環境をインストールするソフトウェアパッケージです。それはBash(Unixタイプのシェル)、Perlインタプリタ、そしてGit実行ファイルとその依存関係を持っています。
一方、msysGitはGit for Windowsをビルドできるビルド環境をインストールするソフトウェアパッケージです。最も簡単な方法は net installer でインストールすることです。
MSYSとMinGWの違い
MinGW project の目標は、GNU Cコンパイラを使用して、POSIX層のないネイティブのWindowsバイナリをコンパイルする方法を提供することです。
しかし、少なくともBashはPOSIX層を必要とします(最も顕著なのはWindowsに
fork()
呼び出しがないためです)。したがって、MSYS(最小システム)が投入され、Windows上でBash(およびPerl)機能を提供するのに必要な最小システムを提供します。その結果、MSYSには(古いバージョンのCygwinに基づく)POSIX層が同梱されています。これはBashとPerlでのみ使用され、その環境内でコンパイルされたものでは使用されません。
ところで、完全なREADMEが削除された場合に備えて、私はそれを Gist にコピーしました。
mintty
Windows用Git Bashの他の部分は、実際のWindowsコマンドライン、minttyです。それが存在する良さに感謝しなさい、しかしそれは私がグーグルに必要とするものではない。
彼らのウィキはMSYS2環境に関する詳細な宝物です: https://github.com/msys2/msys2/wiki
はじめに、この部分は私の最初の質問に最も関連があります。
MSYS2は、3つのサブシステムとそれに対応するパッケージリポジトリ、
msys2
、mingw32
、およびmingw64
で構成されています。
この議論は非常に役に立ちます。 https://sourceforge.net/p/msys2/discussion/general/thread/dcf8f4d3 /#8473/588e