Histórico do Bash não é preservado entre sessões de terminal no Mac

24

Minha história de bash parou misteriosamente de funcionar, e não tenho ideia de como consertar isso. É assim que meu .bashrc se parece:

HISTSIZE=500
HISTFILESIZE=500
HISTFILE=$HOME/.bash_history

No entanto, quando executo o echo $HISTFILE , ele imprime /Users/myusername/.bash_sessions/EE8689E5-7DAD-4018-817E-0AF1DE36082A.historynew .

Eu sou o proprietário do arquivo .bash_history, por isso não sei ao certo como resolveria esse problema.

Obrigado!

    
por Nelson Liu 04.08.2015 / 11:18

5 respostas

18

O terminal atribui a cada sessão de terminal um identificador único e o comunica através da variável de ambiente TERM_SESSION_ID para que os programas executados em um terminal possam salvar / restaurar o estado específico do aplicativo ao sair e reiniciar o Terminal com Continuar ativado.

Uma nova pasta (~ / .bash_sessions /) é usada para armazenar os arquivos HISTFILE e .session que são exclusivos das sessões.

Durante a inicialização do shell, o arquivo da sessão é executado. Arquivos antigos são excluídos periodicamente.

O comportamento padrão permite salvar e restaurar o histórico de comandos do bash de forma independente para cada sessão de terminal restaurada. Também mescla comandos no histórico global para novas sessões.

Você pode desativar esse comportamento e compartilhar um único histórico definindo

export SHELL_SESSION_HISTORY=0

Se HISTTIMEFORMAT for definido, o histórico por sessão é desabilitado por padrão (leia mais em / private / etc / bashrc_Apple_Terminal)

O mecanismo de salvamento / restauração é desativado se o seguinte arquivo existir:

~/.bash_sessions_disable

A Apple já mudou algum comportamento desde o lançamento do El Capitan, então é melhor ler mais sobre isso aqui less /private/etc/bashrc_Apple_Terminal

    
por 11.10.2015 / 14:37
6

Eu notei algo semelhante após o upgrade do El Capitan. Basta adicionar o arquivo .bash_sessions_disable no seu diretório inicial para desativar as novas sessões do bash e o .bash_history está novamente em uso.

Este Thread do Reddit tem mais informações e links adicionais.

    
por 23.11.2015 / 04:51
4

Você pode resolver o problema do RVM atualizando para a versão mais recente do RVM ou executando isto:

  echo 'shell_session_update' > $HOME/.bash_logout

Veja o link para mais informações.

    
por 17.01.2017 / 20:19
3

Esta resposta do Thread do Reddit me salvou:

It's probably RVM preventing the exit "hook" for bash_sessions to run. If you comment out the following line in your .bash_profile, it should work.

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"
    
por 01.06.2016 / 11:35
0

Se for um Mac, suponho que o shell de login padrão seja bash e execute .profile em vez de .bashrc . Então, você estava editando o arquivo errado.

    
por 06.08.2015 / 15:29