Por que alguém não configuraria 'histappend' no bash?


36

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?


além do mal-entendido sobre o que essa opção faz - corrigida por @maxscchlepzig - "default" tem pelo menos duas fontes: 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
underscore_d

3
Bem, o unix não é exatamente famoso por padrões saudáveis? Eu esperava os padrões mais hostis por padrão: P (exagerado menor) #
olejorgenb 20/16/16

Respostas:


34

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.


Além disso, por motivos de segurança, pode ser uma boa ideia não salvar o histórico para o usuário root. Esse recurso permite que o root tenha um histórico de shell sem que ele nunca seja salvo no disco.
Mei

1
+1 para "não significa que o histórico seja apagado em cada saída do shell". Isso é explicado perfeitamente bem em outros lugares - mas talvez não seja sucintamente suficiente para alcançar alguns leitores, especialmente no contexto do nome da opção (OK, eu posso ter sido um desses leitores por um tempo). @Mei, como essa permutação histappendtem alguma relevância para se rooto histórico atinge um disco? Novamente, isso afeta apenas o que está escrito, não se .
underscore_d

5
alguém executa menos de 2 instâncias do bash? histappende também HISTCONTROL=ignoredups:erasedups:ignorespaceparece ser um bom padrão para a maioria das pessoas.
28816 dashesy

É histappendeficaz sem sentido se eu tiver HISTFILESIZE=e HISTSIZE=para uma história infinita?
Marc.2377 17/06

1
@ dashesy Eu pessoalmente não gosto de ignorar / apagar entradas duplicadas. Eu tenho o HISTTIMEFORMAT ativado e gosto de poder voltar e ver quando eu emiti um comando ... e se eu o emiti várias vezes, gosto de saber quando cada um foi emitido. É uma preferência pessoal, à qual eles próprios. ;)
msb 20/11

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.