web-dev-qa-db-ja.com

git-bashとcygwin Shellは同じことを行うことができますか?

Windows 10では、git-bashとcygwin Shellは同じことを実行できますか?

1つは何ができるが、もう1つはできないか。

例えば、

  1. シェルとして、それらは両方ともbashと同じように機能しますか?
  2. 一方では実行できるが、他方では実行できないプログラムとコマンドは何ですか?

    たとえば、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が機能しないのでしょうか?

ありがとう。

13
Tim

違いは、Cygwinがいわゆる「Win32」パス名の処理方法を知っていることです。大まかに言えば、「\」はパス名の区切り文字であり、Bashのようなシェルエスケープ文字ではないことがわかっています。あなたが示したエラーは、「\」をエスケープ文字として解釈するBashです。 (編集:1つの\を2つに置き換えて、バックスラッシュをエスケープして、Bashがコマンドをreg.exeに正しく渡すようにすることもできます。)

そうは言っても、CygwinはWindowsのパス名を取得しますが、そうすることは好みません。 documentation は、それらの使用を警告します。もちろん、少し後退しても問題はありません。しかし、CygwinでWindowsプログラムを実行することはできますが、長期的な健全性のために、WindowsプログラムをCMD.EXEプロセッサで実行し、UNIXプログラムをCygwinで実行することを推奨しています。

10
AlwaysLearning

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コマンドが含まれているのを見るのはちょっとおかしいです。

1
romulusnr

私は違いを見つけました:このスクリプトは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)
0
WesternGun