M BUZZ CRAZE NEWS
// general

Arrow keys, Home, End, tab-complete keys not working in shell

By Gabriel Cooper

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?

4

8 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/bash

or 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'

2

I 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.xml

Find:

<property name="&lt;Super&gt;Tab" type="string" value="switch_window_key"/>

Change it to:

<property name="&lt;Super&gt;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.

2
sudo 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 complete

That 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 bash

The 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

Your Answer

Sign up or log in

Sign up using Google Sign up using Facebook Sign up using Email and Password

Post as a guest

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy