auto-completion does not work for "sudo apt-get install" [duplicate]

Okay a college of mine just showed me that you could do

sudo apt-get install <type first letters of package> <TAB>

That it auto-completes the name of the package. Just for an example...

sudo apt-get install ged<TAB> results in sudo apt-get install gedit

Now I tried to do this but this does not work for me.

How can I solve this? Do I have to install a package? My college told me that he didn't install anything extra for it.


Solution 1:

Bash does support some more kinds of autocompletion, not only filename completion.

In the file /etc/bash.bashrc, you will find a paragraph, like this or similiar to this:

# 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

(this example is from debian, but is probably identical to the Ubuntu version)

By removing the # character in the beginning of each line you put a lot of additional completion rules into effect. (Don't remove the # on the first line... thats really a comment ;-)

I believe apt-get completions are among those enabled with this. If not you could think about switching to zsh. I know they support it ;-)

Solution 2:

I found that on mine this was happening because bash-completion was not installed for some reason. So this fixed it (12.04):

sudo apt-get install bash-completion

Solution 3:

I had the same problem after installing Ubuntu 15.10.
Reinstalling bash-completion worked for me :

sudo apt-get install --reinstall bash-completion

Solution 4:

In Ubuntu it started to irritate me too, so I just did (in terminal):

gksu gedit /etc/bash.bashrc

and changed

# enable bash completion in interactive shells
#if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
#    . /etc/bash_completion
#fi

into

# enable bash completion in interactive shells
if [ -f /etc/bash_completion ] && ! shopt -oq posix; then
    . /etc/bash_completion
fi

now it works like I want it to again... HTH :)

It is different from the example Paul Hänsch gave, mine came from ubuntu 12.04. I am not sure what Pauls version would do exactly, maybe he could elaborate on that a bit?