Why doesn't auto complete work in my shell?

10,307

sh is provided by dash in Ubuntu. Many shells, including bash and zsh, have sophisticated features for easy interactive use. dash is deliberately quite minimal and does not offer such features. In particular, it does not offer tab completion.

Even stripped-down Ubuntu systems typically have bash installed because it is considered an essential package--we're supposed to be able to assume it is present even outside the case where another package depends on it. Typically bash is the default user shell on Ubuntu--that is, the login shell new users get by default--though this can be reconfigured.

I recommend you use bash or another shell that is nice to use interactively. You can see if bash is available in that VM by running:

bash

Assuming your $PATH is set reasonably, that will run bash if it is available. You can make sure that tab completion works in bash--it should, but there's no reason not to check--and then get tab completion in the future through one of two approaches:

  • You can just run bash when you want tab completion and other bash features.
  • You can change your user account's login shell to bash with the chsh command.

Note that there is a separate package called bash-completion which is also usually installed. This provides programmable tab completion--that is, tab completion that varies by context and, for example, knows about the flags and other syntax of commands. It's possible to have bash installed but not bash-completion.

(To find out if any particular package--bash, bash-completion, or anything else--is installed you can use apt list package-name. For more information about a package you can use apt show package-name and apt policy package-name.)

Share:
10,307
AndreaNobili
Author by

AndreaNobili

Updated on September 18, 2022

Comments

  • AndreaNobili
    AndreaNobili almost 2 years

    I am not so into Linux and I have the following doubts: a client provided me an Ubuntu 18.04.3 LTS virtual machine which I access via SSH. (I am using MobaxTerm as SSH client but it should not be the problem.) The shell used is sh.

    The problem is that in the shell the autocomplete function is not working as I expected using the Tab key.

    It simply put the classical tab white spaces.

    Why? How can I change this configuration?

    • Admin
      Admin over 4 years
      Try typing bash first (to switch to "bash") and then try to use autocomplete..
    • Admin
      Admin over 4 years
      @FedonKadifeli It works, if you put it as response I will accept it
    • Admin
      Admin over 4 years
      You can just upvote my comment.
    • Admin
      Admin over 4 years