Tilde seen as backspace in shell

Gene Smith gds at chartertn.net
Thu Jan 22 22:18:41 UTC 2009


I don't know if this is a bug or a feature I don't understand about 
terminal protocols or shells. When I enter a tilde (~) the effect is the 
same as hitting backspace. This makes it impossible to enter a filename 
that contains a ~ which is how LFNs are now displayed when they exist in 
the filesystem.

I have seen this with RTEMS shell running in linux xterms, cygwin rxvt, 
XP cmd window and Ed Sutter's uCon. Changing terminal setting make no 
difference.

Looking with wireshark and telnet filter I see tilde go out. But then an 
echo of \b  (0x07, backspace) is send by RTEMS and in the next packet I 
see 0x20,0x07 (space backspace). So the net result of typing tilde is a 
backspace: (backspace, space, backspace).

Looking in cpukit/libmisc/shell/shell.c I found where ~ (Ascii value 
0x7e) is converted to a backspace. Backspace and DEL are also treated 
this way but I guess that is OK.

Also, near the bottom of the same function (rtems_shell_line_editor()) 
at the default of the case only chars between space and 'z' are printed. 
For some reason {|}~ are excluded from printing.

So to allow ~ to act as a regular char, I had to exclude it from being 
converted to backspace and open up the allowed ascii range to include tilde.

-gene




More information about the users mailing list