Tentei procurar ~/.bash_history
meus comandos recentes em uma sessão de terminal, mas eles simplesmente não estavam lá. Acho que é porque tenho várias sessões de terminal abertas.
Existe uma maneira de sincronizar (por exemplo, sync-push ou sync-write-out) o histórico de comandos da sessão atual do terminal no arquivo bash_history (sem fechar a sessão e perder esse ambiente)?
(Seria remotamente semelhante à idéia de como o sync
comando armazena as modificações do sistema de arquivos em alguns sistemas.)
Eu imagino que eu poderia configurar o bash para preservar o histórico de várias sessões, mas a capacidade de enviar o buffer do histórico atual ainda seria útil em cenários quando você estiver trabalhando em uma nova máquina e acidentalmente se esqueceu de configurá-lo da maneira que desejaria .
fonte
history -a
comando shell builtin, mas de alguma forma agora recebo 'permissão negada' no.bash_history
arquivo, depois disso.Respostas:
Adicione esta linha a
.bashrc
:Abra o novo terminal e verifique.
Explicação
history -a
anexa novas linhas de histórico ao arquivo de histórico.history -n
informabash
para ler linhas que não são lidas do arquivo de histórico para a lista de histórico atual da sessão.PROMPT_COMMAND
: o conteúdo dessa variável é executado como comando regular antes dobash
prompt de show. Portanto, toda vez que você executa um comando,history -a; history -n
é executado e seubash
histórico é sincronizado.fonte
history -a
em um terminal com bashrc não modificado.export PROMPT_COMMAND="${PROMPT_COMMAND};history -a; history -n"
${PROMPT_COMMAND}
é esvaziar isto dá um erro por causa da liderança;
export PROMPT_COMMAND="${PROMPT_COMMAND}${PROMPT_COMMAND:+;}history -a; history -n"