Parece que é codificado na linha 5576 no shell.c (versão 3.14.1):
sqlite3_snprintf(nHistory, zHistory,"%s/.sqlite_history", zHome);
Então, para mudar isso, sua única opção é editar a fonte e recompilar.
sqlite3
armazena o histórico de comandos em .sqlite_history
, que é criado por padrão em:
$HOME/.sqlite_history
Como posso alterar este local para outro lugar?
Isso é possível, por exemplo, com mysql
, onde eu posso definir a variável de ambiente
MYSQL_HISTFILE=/path/to/whatever/file
Mas não encontrei nenhuma variável de ambiente correspondente para sqlite3
export SQLITE_HISTFILE=/tmp/history
não tem efeito. Eu encontrei um post onde alguém pergunta pergunta, mas nenhuma resposta útil é dada.
Para listar algumas das alternativas possíveis,
crie ~/.sqlite_history
em um link simbólico para outro arquivo.
simplesmente execute HOME=/tmp sqlite3
para que o programa salve o histórico em /tmp/.sqlite_history
, embora isso pressuponha que você não precisa do diretório pessoal real dentro do ambiente de comando.
edite o binário e substitua a string "%s/.sqlite_history"
, encontrada por Hoov, por outra string com o mesmo número de bytes, por exemplo, "/tmp/sqlitehistory"
:
sed < /usr/bin/sqlite3 's|%s/.sqlite_history|/tmp/sqlitehistory|' >/tmp/sqlite3
cmp -l /usr/bin/sqlite3 /tmp/sqlite3 # check no extraneous differences
chmod +x /tmp/sqlite3
/tmp/sqlite3
use o LD_PRELOAD
correção que propus em outra pergunta para alterar um nome de arquivo ( "/tmp/adb.log"
nesse caso) para outro durante uma chamada open()
.
A partir de 10 de outubro de 2018 parece que uma nova variável , $SQLITE_HISTORY
, foi adicionada ao endereço isso.