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?
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?
Respostas:
Bem, quando histappend
não está definido, isso não significa que o histórico é apagado em cada saída do shell. Sem o histappend
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.
histappend
tem alguma relevância para se root
o histórico atinge um disco? Novamente, isso afeta apenas o que está escrito, não se .
histappend
e também HISTCONTROL=ignoredups:erasedups:ignorespace
parece ser um bom padrão para a maioria das pessoas.
histappend
eficaz sem sentido se eu tiver HISTFILESIZE=
e HISTSIZE=
para uma história infinita?
Para compatibilidade histórica, eu acho. A histappend
opção não existia até o bash 2.0.
histappend
.
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=452459