我有两个安装了 debian 挤压的系统。当我键入时在一个系统上:
service <TAB>
Run Code Online (Sandbox Code Playgroud)
它向我展示了所有可用的服务(来自 /etc/init.d)
在另一个系统上,它显示了当前目录中的所有文件。有谁知道哪个设置会改变这种行为?
更新:
文件 /etc/bash_completion.d/service 丢失。我从它正在工作的机器上复制它。如果我输入complete -p | grep service
它会显示我:
complete -F _service service
Run Code Online (Sandbox Code Playgroud)
在它不工作的机器上,该命令不显示任何内容。我complete -F _service service
在命令行中执行,之后,命令service <TAB>
显示我:
service -su: completion: function `_service' not found
Run Code Online (Sandbox Code Playgroud)
这个函数是在我最近复制的服务文件中定义的,由于某些原因找不到...
rus*_*ush 20
首先检查是否安装了 bash-completion 运行:
$ dpkg -l bash-completion | tail -1
Run Code Online (Sandbox Code Playgroud)
它应该输出如下内容:
ii bash-completion 1:1.3-1 programmable completion for the bash shell
Run Code Online (Sandbox Code Playgroud)
如果输出为空,则安装它:
aptitude install bash-completion
Run Code Online (Sandbox Code Playgroud)
然后检查它是否启用:
$ grep -A 2 bash_completion ~/.bashrc /etc/bash.bashrc
Run Code Online (Sandbox Code Playgroud)
应该输出类似的东西
~/.bashrc:if [ -f /etc/bash_completion ]; then
~/.bashrc: . /etc/bash_completion
~/.bashrc:fi
Run Code Online (Sandbox Code Playgroud)
如果没有这样的内容或者它被注释(在#
之后~/.bashrc:
)然后添加/取消注释
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
Run Code Online (Sandbox Code Playgroud)
到 ~/.bashrc 并用
. ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
之后它应该可以正常工作。
归档时间: |
|
查看次数: |
10894 次 |
最近记录: |