How to Fix Minimal $ Prompt and Missing Features After Linux User Creation


2 views

After creating a new user with adduser username, you might encounter a surprisingly minimal terminal experience:

$

Compared to root's fully-featured prompt:

root@lin01:~#

The stripped-down environment typically lacks:

  • Hostname and username display
  • Directory path in prompt
  • Tab completion
  • Syntax highlighting
  • Command history

This occurs because new users are often assigned /bin/sh (a basic shell) instead of /bin/bash. Verify with:

echo $SHELL

If it shows /bin/sh, we've found our issue.

While logged in as the affected user, execute:

chsh -s /bin/bash

Then log out and back in. For immediate application without relogging:

exec bash

Confirm the change took effect:

grep ^username /etc/passwd

Should display /bin/bash at the end. If issues persist, check:

ls -l /bin/sh

Some systems symlink sh to dash instead of bash.

To customize your new bash environment:

nano ~/.bashrc

Add these common enhancements:

# Enable color support
force_color_prompt=yes

# Better prompt
PS1='${debian_chroot:+($debian_chroot)}$$\033[01;32m$$\u@\h$$\033[00m$$:$$\033[01;34m$$\w$$\033[00m$$\$ '

# Enable programmable completion
if ! shopt -oq posix; then
  if [ -f /usr/share/bash-completion/bash_completion ]; then
    . /usr/share/bash-completion/bash_completion
  elif [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
  fi
fi

When creating new users on Linux systems, you might encounter a situation where the terminal shows just a bare $ prompt instead of the full-featured prompt you're accustomed to. This typically indicates either:

1. The user was assigned a different default shell
2. Shell configuration files are missing
3. Environment variables aren't properly set

The first thing to check is which shell your new user has been assigned. Run:

cat /etc/passwd | grep username

You might see output like:

username:x:1001:1001::/home/username:/bin/sh

Notice the /bin/sh at the end - this indicates the default shell. Many Linux systems default to the minimal Bourne shell (sh) for new users rather than bash.

To switch to bash (which provides all the expected features), use:

chsh -s /bin/bash

After changing shells, log out and log back in. You should now see a proper prompt like:

username@hostname:~$

If tab completion and highlighting still don't work, we need to check the bash configuration.

Sometimes the skeleton files (/etc/skel) aren't properly copied during user creation. Check if these essential files exist in your home directory:

ls -la ~/ | grep -E '\.bashrc|\.profile|\.bash_profile'

If they're missing, you can copy them from the skeleton directory:

cp /etc/skel/.bashrc /etc/skel/.profile ~/

Then source them to apply changes:

source ~/.bashrc
source ~/.profile

For those who want more control over their prompt appearance, you can edit ~/.bashrc and look for the PS1 variable. Here's a robust example:

# Custom prompt in ~/.bashrc
PS1='$$\e[1;32m$$\u@\h$$\e[0m$$:$$\e[1;34m$$\w$$\e[0m$$\$ '

This creates a colored prompt showing username, hostname, and current directory.

If problems persist after these steps, check:

1. Permissions: ls -ld ~/
2. Environment variables: printenv
3. Shell initialization order: which files are being sourced

For complete debugging, you can trace shell initialization:

bash -x