Windows 10では、git-bashとcygwin Shellは同じことを実行できますか?
1つは何ができるが、もう1つはできないか。
例えば、
一方では実行できるが、他方では実行できないプログラムとコマンドは何ですか?
たとえば、git-bashでは、一部のWindowsコマンドを実行できません。
$ reg add "HKCU\Software\Microsoft\VisualStudio\14.0_Config\MSBuild" /v EnableOutOfProcBuild /t REG_DWORD /d 0 /f
ERROR: Invalid syntax.
Type "REG ADD /?" for usage.
しかし、Cygwinでは、うまく動作します
$ reg add "HKCU\Software\Microsoft\VisualStudio\14.0_Config\MSBuild" /v EnableOutOfProcBuild /t REG_DWORD /d 0 /f
The operation completed successfully.
元々、git-bashとcygwinはどちらもWindowsでプログラムを実行できると思っていました。では、なぜcygwinはできるのにgit-bashが機能しないのでしょうか?
ありがとう。
違いは、Cygwinがいわゆる「Win32」パス名の処理方法を知っていることです。大まかに言えば、「\」はパス名の区切り文字であり、Bashのようなシェルエスケープ文字ではないことがわかっています。あなたが示したエラーは、「\」をエスケープ文字として解釈するBashです。 (編集:1つの\を2つに置き換えて、バックスラッシュをエスケープして、Bashがコマンドをreg.exeに正しく渡すようにすることもできます。)
そうは言っても、CygwinはWindowsのパス名を取得しますが、そうすることは好みません。 documentation は、それらの使用を警告します。もちろん、少し後退しても問題はありません。しかし、CygwinでWindowsプログラムを実行することはできますが、長期的な健全性のために、WindowsプログラムをCMD.EXEプロセッサで実行し、UNIXプログラムをCygwinで実行することを推奨しています。
2つの間には多くの重複があります。しかし最終的には、Windowsでのbash/shallの異なる実装です。
Cygwinには、複数の異なるプログラミング言語、コンパイラ、さまざまなネットワークツールなど、インストールできるオプションのソフトウェアが多数あります。 Xおよび多くのXアプリケーションをインストールすることもできます。
Git bashを使用すると、必要なものが手に入ります。追加のツールをインストールするのは少し難しいです。 git bashではできないことがあるので、私は実際には両方をワークステーションに持っています。私もgit bashウィンドウからcygwinアプリを呼び出すことに成功しました。
また、cygwinは完全なposix環境であり、単なるbashインタープリターではないため、その中で非分散コードをコンパイルできることがよくあります。たとえば、見つけたNice Linuxツールのソースを見つけた場合、通常はそのツールをCygwin。 git bashではそれほどではありません。上記で触れたように、Cygwin用にコンパイルしても、git bashでは機能しない可能性があります。
それ以外はほとんど同じです。 git bash afaikはCygwinとは異なるソリューションであるMinGWに基づいているため、git bashにWindowsとPosixのファイルパスを変換するためのcygpath
コマンドが含まれているのを見るのはちょっとおかしいです。
私は違いを見つけました:このスクリプトはGit bashで実行できますが、Cygwinでは実行できません。
for file in *.xml; do
echo "Processing file: $file"
sed -r 's:<Autorizado>([0-9]+)</Autorizado>:<Autorizado>00013069</Autorizado>:' -i "$file"
# ...
done
Git bashではxmlファイルを処理しますが、Cygwinではエラーが発生します。
Processing file: *.xml
sed: cannot read *.xml: No such file or directory
bash --version
Git bashで:
GNU bash, version 4.3.42(5)-release (x86_64-pc-msys)
cygwinの場合:
GNU bash, versión 4.3.46(7)-release (x86_64-unknown-cygwin)