What's those underscore commands?

8,277

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

Share:
8,277

Related videos on Youtube

draw
Author by

draw

Updated on September 18, 2022

Comments

  • draw
    draw over 1 year

    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

    • manatwork
      manatwork about 11 years
      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.
    • derobert
      derobert about 11 years
      @manatwork please post that as an answer.
    • manatwork
      manatwork about 11 years
      @derobert, I only intended to provide a quick hint so the question owner gets something before the expert answer posted ~7 hours later.
    • draw
      draw about 11 years
      @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..
    • manatwork
      manatwork about 11 years
      @draw, Gilles' answer is probably based on research and experience, while mine is based on accidental observations made during directory crawling. Please accept his.
    • draw
      draw about 11 years
      @manatwork ok...