Depois de descobrir o que isso shopt -s histappend
significa , parece uma configuração muito sensata e fico surpreso que não seja o padrão. Por que alguém iria querer limpar seu histórico em cada saída do shell?
bash
command-history
tshepang
fonte
fonte
bash
'pura' ou uma distribuição fornecida.bashrc
. para o primeiro, @Gilles provavelmente está correto. neste último sentido,-s histappend
é padrão no, por exemplo, Debian, desde 2008: bugs.debian.org/cgi-bin/bugreport.cgi?bug=452459Respostas:
Bem, quando
histappend
não está definido, isso não significa que o histórico é apagado em cada saída do shell. Sem ohistappend
bash, lê o arquivo histórico na inicialização na memória - durante a operação, novas entradas são adicionadas - e na saída do shell, as últimas linhas HISTSIZE são gravadas no arquivo de histórico sem anexar, ou seja, substituindo o conteúdo anterior.Por exemplo, se o arquivo de histórico contiver 400 entradas, durante o tempo de execução do bash, 10 novas entradas serão adicionadas - histsize é definido como 500, o novo arquivo de historia conterá 410 entradas.
Esse comportamento só é problemático se você usar mais instâncias do bash em paralelo. Nesse caso, o arquivo histórico contém apenas o conteúdo do último shell existente.
Independente disso: algumas pessoas desejam limpar seu histórico na saída do shell por motivos de privacidade.
fonte
histappend
tem alguma relevância para seroot
o histórico atinge um disco? Novamente, isso afeta apenas o que está escrito, não se .histappend
e tambémHISTCONTROL=ignoredups:erasedups:ignorespace
parece ser um bom padrão para a maioria das pessoas.histappend
eficaz sem sentido se eu tiverHISTFILESIZE=
eHISTSIZE=
para uma história infinita?Para compatibilidade histórica, eu acho. A
histappend
opção não existia até o bash 2.0.fonte
histappend
.