Eu tenho que trabalhar por
- criando um arquivo de histórico claro
- anexando cada comando do histórico a esse arquivo e, em seguida,
- recarregando o histórico desse arquivo toda vez que um comando foi adicionado:
(linha em branco para corrigir o markdown)
#!/bin/bash -i
REPLY=;
backupFile=/tmp/fortunes_history_backup;
tmpFile=/tmp/fortunes_history;
echo -n > $tmpFile; # clear the temporary history file
history -w $backupFile; # save history ...
history -c; # and clear it.
while [ ! \( "$REPLY" = "q" -o "$REPLY" = "quit" -o "$REPLY" = "exit" \) ];
do
clear;
if [ -n "$REPLY" ]; then
echo $REPLY >> $tmpFile;
history -r $tmpFile
# history -s $REPLY does not work!
fi
(fortune -c $REPLY) || (clear; fortune -c;) # try to use the command as fortune file;
# if that file can't be found, use a random one
read -e;
done
history -r $backupFile; # restore history
Os comandos essenciais são echo $REPLY >> $tmpFile; history -r $tmpFile;
.
Eu ainda ficaria agradecido por qualquer explicação de por que history -s $REPLY;
não funciona (ele faz fora do script); parece quase um bug, mas ao mesmo tempo encontrar um bug em bash
( o bash
!) parece quase arrogância: D