.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