When I tab tab
_
in terminal, Bash suggests 206 posibilities. I tried to run one of them _git_rm
but nothing happend, what are they?
Here is a screenshot:
These functions whose name begins with an underscore are part of the programmable completion engine. Bash follows zsh's convention here, where the function that generates completions for somecommand
is called _somecommand
, and if that function requires auxiliary functions, they are called _somecommand_stuff
.
These completion functions typically do nothing useful or raise an error if you call them manually: they're intended to be called from the completion engine.
This follows on a fairly widespread practice in various programming languages to use a leading underscore to indicate that a function or variable is in some way internal to a library and not intended for the end-user (or end-programmer).
type _git_rm
will probably tell you that it is a function.grep -R '_git_rm' /etc/bash_completion.d/
will probably find it. Those functions are usually those which provide the various completion lists forbash
completion.