上面的答案bash: have: command not found
几乎适用于 bash_completion.d/ 中的每个脚本。 链接帖子中的这个答案为我解决了这个问题:
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
脚本/程序 /etc/bash_completion 已经包含 /etc/bash_completion.d 中的脚本,并且还定义了包含的脚本所需的一些功能。
但是,请注意这会减慢 shell 的加载速度,尤其是在 Cygwin 中(对我来说,加载速度减慢到大约 1 秒)。为了缓解这种情况,您可以将 /etc/bash_completion.d/ 中的所有内容重命名为*.bak
,然后.bak
从您实际关心的命令中选择性地删除(感谢cygwin 中 bash 的缓慢加载时间)。
更新:该文件/etc/bash_completion
神奇地消失了(看起来是由于将 bash-completion 包升级到 2.1-1)。作为一个快速的解决方案,我刚刚在 /etc 中创建了一个符号链接到/usr/share/bash-completion/bash_completion
.
更新 2:重新阅读原始问题,没有/etc/bash_completion.d
目录的问题可能与未在 Cygwin 中安装“bash-completion”包有关。