And how does it also autocomplete aliases?


Depending on the command:

  • Someone may have written a function to generate possible completions of arguments, including options. You'll find functions for some commands in /etc/bash_completion.d/* (or a different location on some systems). These functions are registered with the complete built-in (e.g. complete -F _find find tells bash to call the _find function when you press Tab on a find command). They use the compgen built-in to tell bash “here are the possible completions”.
  • For some commands, bash will call the command with the argument --help and parse the output. Such commands can be registered with the complete built-in, e.g. complete -F _longopt ls. _longopt is in fact a completion generation function, that happens to parse a command's output rather than use a fixed list. (There are other more specialized completion functions that parse a command's output to generate possible completions; look in /etc/bash_completion.d/* for examples.)
  • For things like aliases, the completion function looks them up in bash's internal tables. The complete built-in has options for that, e.g. -A for aliases.
| improve this answer | |

Have a look at the file


and observe the files from the directory:


You will find the answer.

| improve this answer | |

Support for bash completion is provided in Debian and Ubuntu by the bash completion package. You also usually need to uncomment the following in /etc/bash.bashrc and/or .bashrc to source the bash completion files. The following is from /etc/bash.bashrc:

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

for this to work. I usually uncomment it in both. The handling of interactive/login shells in Debian is a bit of a mess.

Similar comments presumably apply to other distributions, though maybe they enable the sourcing by default.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.