13

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:

enter image description here

6
  • 13
    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 for bash completion.
    – manatwork
    Mar 18, 2013 at 17:42
  • @manatwork please post that as an answer.
    – derobert
    Mar 18, 2013 at 19:37
  • @derobert, I only intended to provide a quick hint so the question owner gets something before the expert answer posted ~7 hours later.
    – manatwork
    Mar 19, 2013 at 8:19
  • @manatwork The answer is enough for me... I can explore more by myself :D If you don't mind, I'll accept Gilles's anwser though I think I should accept yours..
    – draw
    Mar 19, 2013 at 16:18
  • @draw, Gilles' answer is probably based on research and experience, while mine is based on accidental observations made during directory crawling. Please accept his.
    – manatwork
    Mar 19, 2013 at 16:45

1 Answer 1

15

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).

You must log in to answer this question.

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