.bash_history continua truncando

1

Minha .bash_history continua sendo truncada embora eu tenha definido:

export HISTSIZE=
export HISTFILESIZE=

No meu .bash_profile . Não tenho certeza quando isso acontece, mas isso pode acontecer quando eu sair ou desligar meu computador. Como tive esse problema por um tempo, tentei definir as mesmas variáveis em /etc/profile , o que não resolve o problema.

Ele vai até 2000 linhas (que é o máximo que vi antes de ser truncado), mas às vezes ele apenas trunca e eu noto isso mais tarde. O que posso fazer para corrigir isso?

    
por DisplayName 27.11.2014 / 18:06

2 respostas

4

.bash_profile só é carregado se o bash for iniciado como um login shell . No OSX, o padrão é iniciar um shell de login em cada terminal, então esse é o caso comum para você. Mas se você digitar bash para executar um shell aninhado, ou executar a tela ou o tmux, ou qualquer outra coisa que inicie um shell interativo, você terminará com um shell interativo de não-login. Este shell só lê ~/.bashrc , ele não lê ~/.bash_profile . Como você exportou HISTFILESIZE para o ambiente, um shell iniciado a partir de um programa iniciado a partir de um terminal que executou um shell de login herdará essa configuração. Mas um shell iniciado independentemente não (o que é uma falha fundamental na abordagem do OSX de iniciar shells de login em terminais.) Portanto, um shell iniciado dentro de um emulador de terminal que não inicia um shell de login ou em uma sessão de tela iniciada por um cron trabalho, ou em Aquamacs, etc. não terá nenhuma configuração HISTSIZE ou HISTFILESIZE e, portanto, usará os valores padrão.

A correção é definir HISTSIZE e HISTFILESIZE no local correto: em ~/.bashrc .

Bash bizarramente lê .bashrc apenas de shells interativos sem login. Para obtê-lo lido em todos os shells interativos, coloque a seguinte linha no seu .bash_profile :

case $- in *i*) . ~/.bashrc;; esac
    
por 28.11.2014 / 00:00
0

Você precisa verificar todos os arquivos carregados com todos os tipos de shells. Para mim, acabou por ser o arquivo /etc/bash.bashrc que incluía essas duas linhas

HISTSIZE=1000
HISTFILESIZE=2000

Eu realmente não posso dizer por que isso importava desde que eu estava redefinindo-as no meu .bashrc, mas comentando essas linhas, eu consegui fazer tudo funcionar.

Eu comecei a ver esse problema depois de mudar para o Ubuntu do Debian. Vendo como as linhas não estavam lá no Debian, e que eu nunca vi nenhum problema lá, estou bastante confiante de que esta é uma solução final.

    
por 31.03.2016 / 02:28