Se você tem rlwrap (debian package rlwrap ), então você pode usar algo como:
LINE=$(rlwrap head -n1)
que usará o arquivo ~/.head_history por padrão. ( man rlwrap para mais detalhes, incluindo opções para especificar um nome de arquivo histórico.)
Outra possibilidade é executar read em um subshell com HISTFILE definido para seu próprio arquivo de histórico, mas você precisará fazer muito mais trabalho porque, embora read -e use , história, não atualiza. Então você provavelmente precisará de algo como:
LINE=$(bash -c 'HISTFILE=/path/to/history_file;
history -r; read -e LINE;
history -s "$LINE"; history -w;
echo "$LINE"')