apt-get 自动完成包名称已损坏

Вяч*_*нов 74 apt bash auto-completion

在某个时刻

apt-get install
Run Code Online (Sandbox Code Playgroud)

自动完成被破坏

通过Tab按查看包名称对我来说非常有用

如何修复此自动完成功能?

Ian*_*cks 110

如对另一个答案的评论所述,首先确保bash-completion已安装:

sudo apt-get install bash-completion
Run Code Online (Sandbox Code Playgroud)

显然对于@diapir,它有助于重新安装它:

sudo apt-get install --reinstall bash-completion
Run Code Online (Sandbox Code Playgroud)

但是,对我来说,问题不在于 bash-completion 没有安装或损坏,问题在于我不小心删除了我的.bashrc文件。您可以通过从/etc/skel以下位置复制来获得一个新的:

cp /etc/skel/.bashrc ~/
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,bashrc 提示也为我解决了这个问题。在 `chmod` 命令上使用 `sudo` 是不必要的,对吧? (2认同)
  • 位于 `/etc/` 中的文件是 `0644/-rw-r--r--` 并且 user:group = `root:root`,当复制到你的用户文件夹时,会自动转到 user:user (2认同)

Nur*_*Nur 37

输入以下命令:

sudo -H gedit /etc/bash.bashrc
Run Code Online (Sandbox Code Playgroud)

寻找这些行:

# enable bash completion in interactive shells
# if ! shopt -oq posix; then
#  if [ -f /usr/share/bash-completion/bash_completion ]; then
#    . /usr/share/bash-completion/bash_completion
#  elif [ -f /etc/bash_completion ]; then
#    . /etc/bash_completion
#  fi
# fi
Run Code Online (Sandbox Code Playgroud)

取消注释一些行,使其看起来像这样:

# enable bash completion in interactive shells
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi
Run Code Online (Sandbox Code Playgroud)

保存,关闭终端,然后重新打开它。

安装 13.04 后我遇到了这个问题,这就是我解决它的方法。


ima*_*man 5

请注意此命令的输出:

apt-config dump | grep "Dir::Cache"
Run Code Online (Sandbox Code Playgroud)

应该是这样的:

Dir::Cache "var/cache/apt";
Dir::Cache::archives "archives/";
Dir::Cache::srcpkgcache "srcpkgcache.bin";
Dir::Cache::pkgcache "pkgcache.bin";
Run Code Online (Sandbox Code Playgroud)

如果值为Dir::Cache::pkgcache空,apt 将无法自动完成包名称。查看您的/etc/apt/apt.conf.d/文件并搜索此键以确保它没有设置为空字符串。

grep -r pkgcache /etc/apt/apt.conf.d/
Run Code Online (Sandbox Code Playgroud)

也看看这个答案

  • 如果您在 docker 容器中遇到这个问题,这个(和链接)看起来是正确的答案。 (3认同)