I have installed ubuntu minimal(mini.iso) on my vm. I then used recovery mode to login as root and create an account with useradd -m admin and then set a password with passwd admin.
When I login on the new account, instead of the normal prompt I only see a $ sign. If I try to tab-complete a command or file name it prints a normal tab. If I try to use the arrow keys it prints ^[[A, ^[[B, ^[[C or ^[[D. Also, ls no longer adds colors.
None of these problems were in recovery mode. How can I fix this?
48 Answers
That probably means that the new user account was created with /bin/sh as its login shell (which symlinks to the dash shell by default) instead of /bin/bash - you can change a user's login shell with the 'chsh' command
chsh -s /bin/bashor to change another user's login shell (need to be root to do this obviously)
sudo chsh -s /bin/bash <username>(you will need to start a new login session for the change to take effect). You may also need to copy the default .bashrc from /etc/skel to get the color prompt.
In future you might want to use the 'adduser' command instead of 'useradd' - it sets up a more complete user environment including things like a default .profile and .bashrc - as well as setting the login shell to 'bash'
2I was unable to use tab completion when connecting via VNC to a headless XFCE4. The answer listed here did not work but this did:
Edit Keyboard Shortcuts in xml file:
sudo nano ~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xmlFind:
<property name="<Super>Tab" type="string" value="switch_window_key"/>Change it to:
<property name="<Super>Tab" type="empty"/>Logout/reboot and should be good to go
I just installed Vim and everything was solved. At first, I thought that it was installed on the original version of Ubuntu since I was able to use Vi command, but it was not the case.
sudo apt-get install vim solved the problem.
2sudo sh -c "if [ -e $(which bash) ]; then rm $(which sh) && ln -s $(which bash) /bin/bash; fi"My problem was that /bin/sh was symlinked to /bin/dash.
In my case it turned out to be a function that I had created in my .bash-aliases file called "test". If you are still having these errors, go through your custom aliases in .bashrc, .bash_profile, and .bash_aliases, temporarily removing any suspect additions and try bash auto-complete again.
If everything else is working, but just certain filename completion (autocomplete) attempts fail, it might be that you lack permission to search a directory that is a component of the path.
Suppose you want the listing for some other user's .bash_profile file. The following ls command will work; because sudo runs the ls command with the required permission.
$ sudo ls -al /home/someone_else/.bash_profile However, if you try to use filename completion, the tab completion does nothing.
$ sudo ls -al /home/someone_else/.bash_pr<tab> # does not completeThat is because the bash completion is operating before sudo gets invoked. The command might as well be:
$ ls -al /home/someone_else/.bash_pr<tab> Because permission to search that directory is lacking, the command completion does nothing.
To temporarily run with greater permissions, you can start a new shell with sudo.
$ sudo bashThe ls command can now be run without the sudo predicate, and autocomplete works. (Note that the prompt switches from $ to #.)
# ls -al /home/someone_else/.bash_pr<tab> Just make sure you kill the shell when your task is completed; a shell with this much power is dangerous.
# exit You can also experience tab-completion failure if you're trying to tab-complete a filename with a wrong (or missing) suffix for the command it's being used with in the tab completion.
As an example, tab completion failed on the command+file: totem ~/Videos/SomefilenameWithNoSuffix but worked perfectly after I had renamed the .mkv to ~/Videos/SomefilenameWithNoSuffix.mkv
This will solve all: paste and press . After that you will be able to auto-complete from the history, using arrow up.
bind '"\e[A": history-search-backward'Taken from: Also you can use Ctrl + R to see your history.
1