TAB对于不同的 bash 环境(不同的安装) ,在 . 之后点击命令行时,我在路径完成方面有不同的行为。这是在哪里处理的?
一个具体的例子:
我cmake
用-D
- 参数运行:
cmake -DCMAKE_TOOLCHAIN_FILE=~/x-too<TAB>
它什么也不做。而(注意=
和之间的空格~
cmake -DCMAKE_TOOLCHAIN_FILE= ~/x-too<TAB>
完成到
cmake -DCMAKE_TOOLCHAIN_FILE= ~/x-tools
在其他系统上,它甚至可以在 = 和 ~ 之间没有空格的情况下工作。
在哪里可以找到相关的配置文件和值?
答案1
Linux 自动补全可与complete
.
]➬complete -p cmake
complete -F _cmake cmake
所以由 _cmake 负责。
]➬type _cmake > cmake.sh
现在只需查看/调试它即可。您可以修改例如 _cmake_mine 并调用来测试它:
. cmake.sh
complete -F _cmake_mine cmake
寻求帮助任何内置的bash命令:
help complete
help [[
help for
答案2
你必须从 开始/etc/profile
。查看由此来源的其他文件(.
可能使用命令)。
例如在我的 Ubuntu 系统上,
/etc/profile
源所有 *.sh 文件/etc/profile.d/
/etc/profile.d/bash_completion.sh
来源/usr/share/bash-completion/bash_completion
- 该文件:
- 设置一个完成加载器函数来查找
/usr/share/bash-completion/completions/
- 和来源
~/.bash_completion
- 设置一个完成加载器函数来查找
您需要在各种系统上遵循该路径。也许cmake
其中之一的 /usr/share/bash-completion/completions/ 中没有文件。