Celeb Glow
updates | March 10, 2026

Bash, how to globally fix ^H and ^? backspace problems

I'd like to fix this frequent problem where the shell on a remote server thinks my terminal's backspace key is ^? and sometimes it thinks it is ^H, and happens to be incorrect and outputs the wrong character when I press backspace. If I set it to ^H or ^? with stty erase ^H or stty erase ^? in my .bashrc file, and use some other terminal to access the server, it often ends up wrong. So I'm stuck having to manually type stty erase [whatever] to fix it when I notice the backspace key is wrong.

What I'd like to do is bind both ^? and ^H to backspace, because if I can do this, I can just add it to all of my .bashrc files, and it will certainly end this nightmare. Is this possible? If so, how?

2 Answers

This page has all the information you will ever need on this issue; I suggest you read it. Now, if you are using bash, it should be enough to create an ~/.inputrc file containing these lines:

"\e[3~": delete-char
# this is actually equivalent to "\C-?": delete-char
# VT
"\e[1~": beginning-of-line
"\e[4~": end-of-line
# kvt
"\e[H":beginning-of-line
"\e[F":end-of-line
# rxvt and konsole (i.e. the KDE-app...)
"\e[7~":beginning-of-line
"\e[8~":end-of-line

As an added bonus, they will make Home and End work as well.

Most of the information in is indeed what you need. One correction to the information, is of their suggestion (for XTerm):

*VT100.Translations: #override \ <Key>BackSpace: string(0x7F)\n\ <Key>Delete: string("\033[3~")\n\ <Key>Home: string("\033[1~")\n\ <Key>End: string("\033[4~")
*ttyModes: erase ^? 

While this will get XTerm to send the right character, and change stty to have backspace as ^?, it will still erroniously report ^H as backspace under some occasions, breaking i.e. backspace in Vim instert mode (see here: ). To avoid this, use VT100.backarrowKey: false instead, so:

*VT100.backarrowKey: false
*VT100.Translations: #override \ <Key>Delete: string("\033[3~")\n\ <Key>Home: string("\033[1~")\n\ <Key>End: string("\033[4~")
*ttyModes: erase ^? 

(see also )

0

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