Perché la cronologia di bash sul mio Mac non verrà salvata?

22

Ho sempre usato bash per lavoro e non ho mai avuto problemi con esso. Ora, non salva più alcun comando nella cronologia. Se apro un terminale di una finestra, provo alcuni comandi, si comporta come se tutto avesse funzionato correttamente e mi mostrava la cronologia usando i tasti freccia. Ma se chiudo la finestra (e che è il tempo che dovrebbe essere salvato nel file .bash_history) e ne apro un'altra, non ci sono segni degli ultimi comandi.

Come posso scoprire cosa sta andando storto? O re-impostare tutto da vuoto.

    
posta abaini01 08.12.2015 - 18:31
fonte

6 risposte

22

Ho fatto questo:

Aggiungi una variabile al file .bash_profile

SHELL_SESSION_HISTORY=0

riavviare il terminale e dopo che funziona come mi piacerebbe. (Ha salvato i comandi dopo aver chiuso il terminale)

P.S. Uso anche le variabili HISTFILESIZE e HISTSIZE

HISTSIZE è il numero di righe o comandi che sono memorizzati nella memoria in un elenco cronologico mentre la sessione di bash è in corso.

HISTFILESIZE è il numero di righe o comandi che (a) sono consentiti nel file di cronologia al momento dell'avvio di una sessione e (b) sono memorizzati nel file di cronologia alla fine della sessione di bash da utilizzare nelle sessioni future .

    
risposta data 23.12.2015 - 11:14
fonte
6

A partire da OS X 10.11 El Capitan , lo script installato di sistema /etc/bashrc_Apple_Terminal coordina con Terminal per salvare / ripristinare cronologie dei comandi separate per ogni terminale ripristinato per Riprendi .

Leggi i commenti in /etc/bashrc_Apple_Terminal per una spiegazione su come gestisce le cronologie dei comandi per terminale e su come personalizzarlo.

Se personalizzi PROMPT_COMMAND assicurati di concatenare il valore precedente in modo da non cancellare il comando fornito dal sistema:

PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND; }your_code_here"

Se installi un gestore di segnale EXIT con trap assicurati di fare qualcosa di simile (o chiama shell_session_update dal gestore se non riesci a capire come concatenare il valore precedente, è un po 'complicato).

Quando esci dalla shell, questo codice salverà i nuovi comandi nella cronologia del terminale in ~/.bash_sessions . Per vedere se incontra problemi, invece di chiudere il terminale, esci manualmente dalla shell con exit (o Control-D). Registra i messaggi di avanzamento. Notare se non viene completato o se vengono visualizzati messaggi di avvertenza o di errore.

In generale, bashrc_Apple_Terminal tenta di rilevare e disattivare la cronologia per sessione se sembra che l'utente abbia eseguito personalizzazioni che non sono compatibili con esso. Sembra che tu abbia trovato uno che non gestisce. Ti preghiamo di considerare l'archiviazione di un bug report con Apple: link

    
risposta data 16.12.2015 - 14:33
fonte
5

Solo nel caso in cui ci siano altri che hanno RVM (Ruby Version Manager) installato: verifica se hai la seguente riga nei file ~/.profile , ~/.bashrc o ~/.bash_profile .

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

It's probably RVM preventing the exit "hook" for bash_sessions to run.

Questo era il problema per me. Prova a commentarlo.

Fonte: Reddit

    
risposta data 01.02.2017 - 08:08
fonte
2

Potresti anche creare un file .bash_logout con il seguente:

shell_session_update

Sourced from GitHub comment

    
risposta data 16.09.2017 - 21:28
fonte
1

Durante una nuova installazione di Mac OS X (aggiornato alla 10.13.6), la cronologia dei comandi di bash non veniva salvata. C'erano anche file .bashrc o .bash_profile. In questo caso, l'aggiunta di un file .bashrc vuoto lo ha risolto per me.

touch .bashrc

Questo sembra essere tutto ciò di cui hai bisogno ...

    
risposta data 10.08.2018 - 23:22
fonte
1

Ho avuto lo stesso problema con un Mojave osx appena installato. Ho controllato il mio file ~/.bash_history e ho visto questo:

$ ls -l ~/.bash_history -rw------- 1 root staff 599 Jan 4 20:50 /Users/gilm/.bash_history

Riuscire semplicemente a gilm ha risolto il problema. Ho usato:

sudo chown gilm /Users/gilm/.bash_history

e questo ha risolto il mio problema.

    
risposta data 04.01.2019 - 19:53
fonte

Leggi altre domande sui tag