vy3*_*y32 0 bash tab-completion
在我的 Fedora 19 系统上,当我sh在命令行的开头有一个时,选项卡完成对 bash 脚本不起作用,除非脚本文件名以.sh.
也就是说,如果我输入:
$ sh file<tab>
Run Code Online (Sandbox Code Playgroud)
当前目录包含:
filename
Run Code Online (Sandbox Code Playgroud)
...标签完成不起作用。
但是如果当前目录包含:
filename.sh
Run Code Online (Sandbox Code Playgroud)
完成工作。
补全适用于其他所有内容,因此我怀疑有一个自定义补全程序用于以 开头的命令,sh它正在寻找以.sh.
有没有简单的方法来解决这个问题?我想为我的用户修复它,而不是为所有用户修复它,因为我不想修改操作系统。
自定义补全的最基本命令bash是:
仅.sh在(G 代表globbing)之后完成文件:
complete -G '*.sh' sh
Run Code Online (Sandbox Code Playgroud)
可能这是您(系统范围)配置中的某个地方。(您可以检查complete -prwhich 打印所有定义)
在刚刚发出后完成任何文件名sh
complete -A file sh
Run Code Online (Sandbox Code Playgroud)
-A采取更多可能的操作(此处:file),请查看complete内置函数的说明以man bashbuiltins获取更多选项。
要永久修复该行为,请将最后一个命令也放入您的~/.bashrc.