Eu uso múltiplos terminais Konsole. E eu quero que todos os comandos que eu digito em cada terminal sejam salvos no histórico de comandos, de modo que o próximo konsole que eu abrir tenha todos eles.
Para evitar que cada terminal gravasse o histórico de comandos do outro terminal, forneci as seguintes configurações no meu .bashrc
# avoid duplicates and commands starting with space
export HISTCONTROL=ignoredups:erasedups:ignorespace
# append history entries..
shopt -s histappend
#My machine reboots without warning sometimes.Hence to save commands instantaneously.
export PROMPT_COMMAND="history -a"
export HISTSIZE=1000
PS1="\[\e[1;34m\]\! \[\e[0m\]"$PS1
Eu dei a última linha para ver o número do comando no meu prompt.
O comando não. nunca foi acima de 600, mas ainda alguns dos meus antigos comandos estão desaparecendo da história. Existem muitos comandos que são dados repetidamente, mas como esperado de ignoredups
, nunca aumenta o prompt no no prompt. No entanto, os comandos antigos ainda estão desaparecendo. E o número de comandos no histórico sempre fica um pouco acima de 500.
O arquivo .bash_history
ainda contém muitos duplicados, apesar dos ignorados.
PS: A saída de echo $HISTSIZE
e $HISTFILESIZE
são ambos =1000
Atualização:
Eu encontrei o problema na entrada acima para .bashrc
.
Apenas chamar history -a
in PROMPT_COMMAND
simplesmente anexará o último novo comando à .bash_history. Portanto, o ignoredups
e erasedups
não têm efeito.
Existe alguma maneira, eu ainda posso escrever para o .bash_history sem duplicatas de cada terminal? Eu não quero carregar todo o histórico em cada prompt de comando por history -r
e gravá-lo novamente com history -w
, porque os comandos que eu emiti em um terminal aparecerão em outro terminal em paralelo também. Eu quero que os comandos combinados apareçam apenas em um novo terminal.
O quebra-cabeça, por que minha história foi cortada para 500 está resolvido. Eu notei que isso acontecia toda vez que eu entrava nessa máquina. A criação de um .bash_profile
com a entrada a seguir resolveu esse problema.
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
Agora meu .bashrc é executado cada vez que eu ssh também. E o tamanho do arquivo de histórico agora aumenta de maneira monótona.