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 histappendnão está definido, isso não significa que o histórico é apagado em cada saída do shell. Sem o histappendbash, 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.
histappendtem alguma relevância para se rooto histórico atinge um disco? Novamente, isso afeta apenas o que está escrito, não se .
histappende também HISTCONTROL=ignoredups:erasedups:ignorespaceparece ser um bom padrão para a maioria das pessoas.
histappendeficaz sem sentido se eu tiver HISTFILESIZE=e HISTSIZE=para uma história infinita?
Para compatibilidade histórica, eu acho. A histappendopçã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