How can I setup bash completion for the unset command, like when you use echo $XXX, you can get a completion for XXX?

  • It seems to work already.
    – enzotib
    Dec 31, 2011 at 13:22
  • @enzotib really ? i tried unset TM<tab> and nothing appears , but unset $TM<tab> , which is not the case ...
    – daisy
    Dec 31, 2011 at 13:55
  • It probably works already with the bash completion package from caliban.org/bash/#completion_download installed. (On Fedora or with EPEL, yum install bash-completion.)
    – mattdm
    Dec 31, 2011 at 15:10

2 Answers 2


You need to turn on bash's programmable completion system. There's a file called bash_completion distributed with bash that you must include from your .bashrc. On typical distributions, put this in ~/.bashrc:

. /etc/bash.completion

If this file is not present on your system, it may be in a separate package from the main bash executable, e.g. bash-completion on Debian.

If you specifically want completion for the unset command, that's

complete -v unset

On my Ubuntu/Bash system:

TM1=A; TM2=B
unset TM<ESC><*>
 => unset TM1 TM2  (expands in the command line)  

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .