Bash Cygwin git选项卡完成

Bash Cygwin git选项卡完成,bash,cygwin,bash-completion,Bash,Cygwin,Bash Completion,我在windows上安装了Cygwin,其中一个默认软件包是git tab completion,但我没有tab completion 我做了一些搜索,发现一个便条说默认情况下它没有启用。我将skel.bashrc和.bash_配置文件复制到~和.bashrc中,取消了行的注释以完成,然后重新启动控制台。还是没什么 然后我注意到,.bash_completion文件在/etc中不存在,因此我在网上找到了该文件的副本并将其放置到位,但在git中仍然没有完成 似乎还应该有一个/etc/bash_co

我在windows上安装了Cygwin,其中一个默认软件包是git tab completion,但我没有tab completion

我做了一些搜索,发现一个便条说默认情况下它没有启用。我将
skel.bashrc和.bash_配置文件复制到~和.bashrc
中,取消了行的注释以完成,然后重新启动控制台。还是没什么

然后我注意到,.bash_completion文件在
/etc
中不存在,因此我在网上找到了该文件的副本并将其放置到位,但在git中仍然没有完成

似乎还应该有一个
/etc/bash_completion.d
目录,其中包含
git/
,但我也没有这个目录

在my.bashrc中

 for file in /etc/bash_completion.d/* ; do
    source "$file"
 done

上面的答案为bash\u completion.d/中几乎每个脚本打印出
bash:have:command not found
。从链接的帖子中为我解决了这个问题:

if[-f/etc/bash_completion];然后
. /etc/bash_完成
fi

脚本/program/etc/bash_completion已经包含了/etc/bash_completion.d中的脚本,并且还定义了所包含脚本所需的一些函数

但是,请注意,这会减慢shell的加载速度,尤其是在Cygwin中(对于我来说,加载速度会减慢到1秒左右)。为了缓解这种情况,您可以将/etc/bash_completion.d/中的所有内容重命名为
*.bak
,然后有选择地从您真正关心的命令中删除
.bak
(多亏了它)

更新:文件
/etc/bash_completion
神奇地消失了(看起来是因为将bash completion包升级到2.1-1)。作为一个快速解决方案,我刚刚在/etc中创建了一个符号链接,指向
/usr/share/bash completion/bash_completion


更新2:重新阅读原始问题,没有
/etc/bash_completion.d
目录的问题可能与没有在Cygwin中安装“bash completion”包有关。

2016年更新:安装包
bash completion
安装“git completion”从cmd.exe运行包:

cyg获取git完成

此后,您无需修改您的.bashrc。

截至2016年5月,我只需使用Cygwin安装实用程序(v2.874)安装bash完成包,即可使git&svn选项卡完成工作:。确保选择“从Internet安装”选项。bash completion包列在shell类别下。

几天前我偶然发现了同样的问题,安装
bash completion
是不够的

这个问题在我的案例中得到了解决,下载并复制到
/etc/bash\u completion.d/

另见:
我必须安装以下Cygwin软件包:

  • bash完成
  • bash完成开发

试试source/etc/bash\u completion.d/git,应该在当前shell中启用它。如果有,请检查您的bash init scriptsAgain,我没有/etc/bash_完成。d我按照上面给出的链接做了评论11所说的,在~/.bashrc If[-f/etc/bash_完成]中放以下几行;那么/etc/bash_completion fi脚本/program/etc/bash_completion已经包含/etc/bash_completion.d中的脚本,并且还定义了所包含脚本所需的一些函数。git中仍然没有自动完成。我仍然很困惑cygwin如何显示它包括git autocomplete,但在安装之后,没有/etc/bash_完成文件,也没有a/etc/bash完成。d DirectorySem的答案是2015年唯一有效的答案。这个特别的答案把我的终端搞砸了。stackoverflow上有一个类似的线程。从安装尝试:git完成包已过时。选择此软件包进行安装将导致安装git软件包,而git软件包将取代此软件包。从2016年5月起,这是最简单的安装方式!需要注意的是,该包在
/etc/profile.d
中添加了
bash\u completion.sh
,因此无需在
.bashrc
中调用
/usr/share/bash completion/bash\u completion
。上面提到的脚本还进行了一些检查,包括测试它是否已经运行。我在2017/6/8安装了cygwin,版本是2.8.2。它是64位版本。我安装了
git
bash completion
,但是后来我发现
/etc/bash\u completion.d/git
仍然缺失,这使得git completion仍然无法工作。如何修复它?我还尝试搜索
git completion
,但找不到它。这是一个愚蠢的后续操作,但请确保您已在cygwin中安装了
git
bash completion
包。仅仅有bash completion和windows git是不够的。在cygwin中,只需键入:
pact安装bash completion
@kasi我认为
pact
是Babun附带的,而不是简单的CygwinIt为我工作(
cygwin
使用git for windows而不是cygwin的本机)。但是,性能是不可接受的,每一次“未命中”完成都需要>30秒。目前,
bash completion
软件包中没有
/etc/bash_completion
文件。这里有文件
/etc/profile.d/bash_completion.sh
。此文件依次由
/etc/profile
执行。我正在检查
git--ver
是否会扩展到
git--version
。采购
/etc/profile
bash完成后开始工作。看起来在一些更新之后,
/etc/profile
没有被执行。所以现在留给我的最后一个问题是:调用
/etc/profile
的最佳位置是什么?