Why doesn't auto complete work in my shell?
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 otherbash
features. - You can change your user account's login shell to
bash
with thechsh
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
.)
AndreaNobili
Updated on September 18, 2022Comments
-
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 over 4 yearsTry typing
bash
first (to switch to "bash") and then try to use autocomplete.. -
Admin over 4 years@FedonKadifeli It works, if you put it as response I will accept it
-
Admin over 4 yearsYou can just upvote my comment.
-
Admin over 4 years
-