Git Bash如何与cygwin一起使用

6

我安装了Git-Bash,但是我无法访问Cygwin中的所有工具(如vim和vimdiff)。这可以在Git配置文件中设置吗?

3个回答

4

3

Git bash和msysgit包中的相关工具都是纯Windows可执行文件。

这就是为什么你不能在Git bash中运行Cygwin工具,因为它们不是完全的Windows程序(它们需要cygwin.dll,见下面@fvu的评论)。

如果你想使用Cygwin工具来操作Git,你需要安装Cygwin中的git软件包。


Cygwin编译的程序是Windows程序,但它们依赖于cygwin dll所提供的某些POSIX特性的仿真。更多信息请参见此处。但这并不改变你的结论。 - fvu
1
那么为什么可以从cmd.exe(一个纯Windows可执行文件)运行Cygwin工具,但不能从Git bash运行呢? - Claus Conrad
为什么在将 C:\cygwin64\bin 添加到 PATH 环境变量后,可以从 Git Bash 运行 Cygwin 的 rsync?请参见 Keith Tyler 的下面的答案。 - Amedee Van Gasse

0

如果您在Git Bash中将Cygwin的bin目录添加到$PATH变量中,请确保使用Git 2.27(Q2 2020)。

通过run_command() API运行的实用程序在Cygwin上无法正确启动,当它们的路径以反斜杠的完整路径给出时。

请参见提交05ac858(2020年3月27日),作者为Andras Kucsma(r0mai
(由Junio C Hamano -- gitster --提交d01b722中合并,2020年4月22日)

run-command:在Cygwin上正确触发PATH查找

签名作者:Andras Kucsma

在Cygwin上,run-command.c::start_command()采用了类POSIX系统的代码路径。调用prepare_cmd()辅助函数来决定是否需要在PATH中查找命令。逻辑是只有当命令中没有任何斜杠'/'时才进行PATH查找。如果测试通过,我们将尝试通过在每个冒号分隔的PATH组件后附加字符串来运行命令。

Cygwin环境支持Windows和POSIX样式的路径,因此用户提供的任何外部程序都可以使用正斜杠'/'和反斜杠'\'作为目录分隔符。

以下是被错误地搜索PATH而不是按原样执行的路径字符串示例:

"C:\Program Files\some-program.exe" - "a\b\c.exe"

为了处理这些问题,prepare_cmd() 中的 PATH 查找检测逻辑被教导了解这个 Cygwin 怪癖,通过引入 has_dir_sep(path) 辅助函数来抽象出真正的 POSIX 和 Cygwin 系统之间的差异。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接