我正在运行最小 Debian安装时几乎没有安装任何东西。我正在尝试让 bash 自动完成工作。我查看了超级用户和 askubuntu 网站上有关此主题的所有问题,以下是我发现的内容。
我知道我需要安装 bash-completion。我在我的系统上安装了它。我发现我的文件中必须有这个$HOME/.bashrc
:
if [ -f /etc/bash_completion ]; then
. /etc/bash_completion
fi
它已经存在了。我在某处读到它应该添加到文件中/etc/profile
。我这样做了。我注销并重新登录,但它不起作用。我将其添加&& echo "OK"
到文件中,当我加载终端时,它显示 OK,所以我知道它正在运行。
程序和路径的自动完成功能可以工作,但在我安装 bash-completion 之前它一直都有效。让我烦恼的主要问题是 apt。如果我说sudo apt install ged
然后按两次 tab,它不会像在 Ubuntu 和其他操作系统中那样给出以该字符串开头的软件包列表。
那么基本上,我怎样才能让 bash-completion 与 apt 一起工作?提前谢谢您!
答案1
我没有注意到的是,bash-completion 中有一个/usr/share/bash-completion/
名为completion 的文件夹,其中包含它支持的每个程序的单独文件。
我从我的 Ubuntu 机器复制了 apt 文件,并将其放在我的极简 Debian 机器上的那个文件夹中。现在它运行正常。
答案2
我如何解决它
wget
我在尝试自动完成时遇到了自动完成问题,我设法通过从下面的代码中apt-get install wg[TAB][TAB]
删除参数来解决它:--no-generate
/usr/share/bash-completion/completions/apt-cache
/usr/share/bash-completion/completions/apt-get
值得一提的是,这些文件只有在安装后才可用bash-completion
。
我所指的参数--no-generate
可以在下面的行中看到,但我删除了 ALL --no-generate
,而不仅仅是从这一行:
https://github.com/scop/bash-completion/blob/master/completions/apt-get#L28
我怎么会落得如此境地?
set -v
在运行之前,我到达了这一点apt-get install wg[TAB][TAB]
,它显示执行的命令是:
apt-cache --no-generate pkgnames wg
输出错误:
E: Could not open file - open (2: No such file or directory)
当我在apt-cache pkgnames wg
没有执行的情况下执行时--no-generate
,我正确地获得了自动完成的列表:
root@484f5c8f56ba:/# apt-cache pkgnames wg
wgalician-minimos
wget2
wgaelic
wget
wgerman-medical
wget2-dev
希望这可以帮助。