rlwrap is a nice utility that enables readline's features in utilities that don't provide them. I tried to rewrite something similar in bash so here's a sketch of the code:
while read -re; do history -p -- "$REPLY" history -s -- "$REPLY" done | ... The problem is when I pipe that to a program that prints a prompt. On a first impression, it seems to work fine, since pressing backspace doesn't delete the printed prompt, but actually it will delete it if I type some other character, then backspace. In the examples, the prompt will be a $ and it will be printed by the second program in the pipeline. $<backspace><backspace><backspace> # keeps the prompt $x<backspace> # deletes both x and the prompt I know that read has -p to print a prompt, and this seems to work if I set read's prompt to any printable character. read -e -p ' ' $ x<backspace> # deletes x, keeps space and $ read -e -p '' $x<backspace> # deletes x and $ The same behaviour happens in all the versions from bash 3. I think this is a bug, please fix it either by allowing an empty prompt to read -p, or somehow disabling/removing the "feature" that deletes extra characters that weren't typed by the user. Thanks --- xoxo iza