Finn
Finn

Reputation: 168

Bash will not auto-complete (Tab) with files

Auto-completion in bash (with Tab) works on folders, but not with files.

This is how the bottom part of the .bashrc file looks, with the bash-completion part installed and updated:

# enable programmable completion features (you don't need to enable
# this, if it's already enabled in /etc/bash.bashrc and /etc/profile
# sources /etc/bash.bashrc).
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

Any ideas?

Upvotes: 10

Views: 18144

Answers (3)

Chris Povirk
Chris Povirk

Reputation: 3962

One possible cause for this is a file named !. Some default bash-completion setups have a bug when such a file exists. You can remove the file or patch /usr/share/bash-completion/bash_completion as shown in the bug link.

Upvotes: 0

that other guy
that other guy

Reputation: 123410

The third party "bash_completion" package (not to be confused with bash or its native completion) can sometimes be hard to predict.

  1. Some commands are specifically set up to not never complete files, like cd
  2. Some commands will refuse to complete certain filenames, because bash_completion doesn't realize the program handles them, like mplayer.
  3. Some commands are just buggy, especially when paths contain spaces and other characters, like for scp.

If you're ever in a situation where bash_completion isn't being helpful, you can use M-/ (aka Alt + /) to use bash's native filename completion instead.

If a command is frequently giving you trouble, you can disable bash_completion for this command using complete -r thatcommand at the end of your .bashrc.

Upvotes: 22

Troveldom
Troveldom

Reputation: 376

.bashrc file seems ok so the problem probably is in one of the bash_completion files.

I suggest you backup the files and try to replace them with these:

for /etc/bash_completion:

http://pastebin.com/0HWHsbyR

for /usr/share/bash-completion/bash_completion:

http://pastebin.com/c49KrbXT

that are the standard completion files for ubuntu 13.10. Restart the console before checking if it worked.

Upvotes: 2

Related Questions