bash - 在我在 Git for Windows 中设置 COMP_WORDBREAKS 后,什么可以重新初始化它?
问题描述
我有一些使用@
(如@group
)的完成,我希望从中删除它,COMP_WORDBREAKS
但我还没有理解正在恢复的内容@
:我完全知道我们不应该修补COMP_WORDBREAKS
和使用_get_comp_words_by_ref -n @
,但 Git for Windows 上的版本2.28.0.windows.1 (+bash 4.4.23(1)-release) 与 Linux (Gentoo + Bash 5 + app-shells/bash-completion 2.11) 上的不同。
我试图将它添加到我~/.bashrc
的 for Windows 中,它的来源~/.bash_profile
和输出显示在 PS1 提示符之前:
echo "COMP_WORDBREAKS before:"; declare -p COMP_WORDBREAKS
COMP_WORDBREAKS="${COMP_WORDBREAKS//@/}"
echo "COMP_WORDBREAKS after:"; declare -p COMP_WORDBREAKS
export COMP_WORDBREAKS
但是,这不能按预期工作:@
如果我键入declare -p COMP_WORDBREAKS
命令,它仍然存在:
COMP_WORDBREAKS before:
declare -- COMP_WORDBREAKS="
\"'><=;|&(:"
COMP_WORDBREAKS after:
declare -- COMP_WORDBREAKS="
\"'><=;|&(:"
# when I have first access to the TERM and that I can input the declare -p COMP_WORDBREAKS
$ declare -p COMP_WORDBREAKS
declare -- COMP_WORDBREAKS="@
\"'><=;|&(:"
这也显示在此屏幕截图中(我删除了识别部分,但这是与 Git for Windows 捆绑的“Git Bash”命令):
正如我们所看到的,有些东西(我想bash
)正在添加,@
但我找不到在哪里或做什么。
- 我查看了Bash 手册,但看不到它会在哪里恢复
@
? - 我还检查了可以修改的文件
COMP_WORDBREAKS
,但没有看到任何决定性的文件。
解决方案
问题是由于主机名完成 ( shopt -p hostcomplete
) 导致 bash 包含@
要完成(或拆分)的主机,例如user@hos
.
看到在 Windows 下,完成非常有限,我禁用了它:
- 它使用(至少)
/etc/hosts
作为源来完成 - Git for Windows
/etc/hosts
没有任何主机。 - MSYS2
/etc/hosts
似乎是一个副本C:\Windows\System32\drivers\etc\hosts
我不知道(这与我的问题无关)为什么/何时/etc/hosts
复制,C:\Windows\System32\drivers\etc\hosts
但在我的情况下,这个完成是相当无用的。
推荐阅读
- python - 如何将子图添加到现有图作为 networkx 中的边?
- r - 将基于训练集的两步预测模型应用于测试集
- css - 如何解决css图标的零星错误加载?
- vhdl - 错误:(vsim-3173)实体'C:/intelFPGA_lite/18.1/pipelines/simulation/modelsim/work.finalpipelines'没有架构
- java - 使用 JAR 时出现错误的类文件错误版本错误,但其 maven 配置目标已正确设置
- c++ - 绘制 OBJ 模型时,OpenGL 无法正确剔除面
- spring - LAST_ACCESS_TIME 列在控制器方法完成后更新
- openiddict - 自定义流程 - 委托
- android - 如何将使用 intellij Spring Framework Api (PostgreSQL) 创建的 localhost 与 Android Studio 连接?
- stm32 - STM32F4在半双工/单工模式下停用SPI的正确方法