up vote 9 down vote favorite
7
share [g+] share [fb]

The keys Home, End, PageUp, PageDown all type a ~ in my bash session instead of moving the cursor / view around. Why does this happen and which settings do I need to change?

GNU bash, version 4.0.28(1)-release (x86_64--netbsd)
PuTTY v0.60

The question originally read:

In PuTTY, why does pressing the "Home" key on the shell (bash) type a "~"? Or rather, how do I make it move the cursor to the start of the command I've typed?

(I thought the reason was that ~ is the home directory, but the answers say this is not so.)

link|improve this question

77% accept rate
feedback

4 Answers

up vote 4 down vote accepted

Change the Terminal-type String under the Connection > Data tab from the default “xterm” to “linux”. It worked for me.

link|improve this answer
feedback

This is happening because you don't have PuTTY's terminal type set correctly, or because your server doesn't have the correct terminfo definitions installed.

On Debian-based systems, the ncurses-term package (version 5.7+20081213-1) includes terminfo definition files for putty, putty-256color and putty-vt100 terminal types. If you have this package installed, you can set the "Terminal-type string" to "putty" instead of the default "xterm" in Putty's session configuration (Connection -> Data).

Stephen Irons also mentions "linux" as another terminal type that works; I believe this is correct from prior experience, but haven't tested it recently.

On my systems, this allows Home and End to work correctly, though PageUp/PageDown do not scroll the console window. (They do work properly in ncurses applications like aptitude, and Shift-PgUp/Shift-PgDn scroll the console window.)

link|improve this answer
Yes, using TERM=putty or TERM=putty-256color is wisest, though unfortunately at the moment the latter doesn't seem to work right for colors 8-15 (which are supposed to be the bright versions of 0-7). The other "solutions" are are very likely to flake out sometimes do to their flagrant disregard of the differences between the terminals involved. – SamB Oct 14 '10 at 21:05
feedback

What it's actually sending is ^[[1~ which is a terminal escape sequence consisting of:

  • ^[ - escape
  • [ - left square bracket
  • 1 - one
  • ~ - tilde

You can see that by pressing Ctrl+V then Home.

You might be able to fix your problem by changing the PuTTY keyboard setting for Home and End keys to rxvt (which makes the escape sequence ^[[H or by changing the $TERM you're using (or by editing ~/.inputrc).

By the way there's no relationship between the tilde you get when you press Home and the tilde that represents the home directory. For example, in my setup Page-Down produces ^[[6~ which would also print a tilde if it weren't being properly interpreted.

link|improve this answer
Thanks! rxvt fixed the Home key; the End key now produces a ding. PgUp/Down do indeed type ~, and none of the PuTTY Keyboard settings make them work. Is my bash messed up, or is this "normal"? – romkyns Jan 11 '10 at 17:39
What do you get when you type echo $TERM? – Dennis Williamson Jan 11 '10 at 18:07
xterm (15 character limit argh) – romkyns Jan 11 '10 at 18:08
1  
You can try adding "\eOw": end-of-line (that's a capital letter O) to your ~/.inputrc file. – Dennis Williamson Jan 11 '10 at 18:21
End key fixed; I get the idea. Really wish hacks like this weren't necessary though... – romkyns Jan 11 '10 at 18:27
show 1 more comment
feedback

Crtl+A takes you to the start of the line

Here's a list of Bash keyboard shortcuts

link|improve this answer
That's great and all, but Home/End are hard-wired in my brain, and since I only administer the server once in a blue moon the chances of unlearning the hard-wiring are slim. – romkyns Jan 7 '11 at 12:27
feedback

Your Answer

 
or
required, but never shown

Not the answer you're looking for? Browse other questions tagged or ask your own question.