我如何解决它

我如何解决它

我正在运行最小 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

希望这可以帮助。

相关内容