2012-05-07 7 views
23

Sto usando Git per Windows (ver. 1.7.8-preview20111206) e anche se ho un file di .bash_history nella mia cartella home, non è mai viene automaticamente aggiornato . Quando avviò Git Bash, posso vedere nella cronologia i comandi che ho aggiunto manualmente al file .bash_history, ma che non viene aggiornato automaticamente..bash_history non aggiorna in Git per Windows (git bash)

Ho usato il comando shopt -s histappend per assicurarmi che la cronologia venga salvata ogni volta che chiudo la shell, ma non funziona.

Se utilizzo manualmente il comando history -w, il file viene aggiornato, ma vorrei capire perché il comando shopt non funziona come ho capito dovrebbe.

Chiunque può dirmi perché sta succedendo questo comportamento?

Grazie in anticipo

+0

Quali sono i valori di '$ HISTSIZE',' $ HISTFILESIZE' e '$ HISTFILE'? –

+0

$ HISTSIZE è 10000, $ HISTFILESIZE è 10000 e $ HISTFILE è /h/.bash_history. – franmon

risposta

30

ho messo nel mio ~/.bash_profile

PROMPT_COMMAND='history -a' 
+2

Questo ha funzionato per me su Win 7 64-bit. Stavo strappando i capelli per un po 'perché non avrebbe funzionato, quindi ho realizzato che avevo creato con i line-end di Windows, che si rompono. In caso di problemi, verifica due volte che hai salvato con terminazioni di linea Unix usando un editor che supporti questo - non ad es. Bloc notes! – psdie

+0

Puoi sempre usare 'vim' anche sulla linea di comando di Git-Bash – Highmastdon

+0

Puoi anche usare dos2unix per convertire anche le terminazioni di linea. – Chance

4

Se si utilizza bash git per Windows 8, basta mettere questo nel vostro file ~/.bash_logout:

history > .bash_history 

Ovviamente hai bisogno di un file ~/.bash_history.

Saluti.

+0

Windows 8.1 e GNU bash, versione 3.1.0 (1) -release (i686-pc-msys) - funziona! – abrasadera

+2

Per qualche motivo questo non funziona per me. Win7 x64. –

+2

@CamiloMartin - vedi il mio commento sopra per assicurarmi che tu abbia usato terminazioni di linea Unix (ho usato .bash_profile). – psdie

18

Come è stato detto here, per salvare la cronologia di git bash su Windows non è necessario chiudere il terminale con il pulsante X. Utilizzare invece il comando exit. La cronologia dei comandi verrà salvata, indipendentemente dalla configurazione indicata nella risposta accettata.

+1

questo è bello saperlo, ma avrò difficoltà a ricordarlo. – Chance

+0

@Chance fortunatamente non devi più ricordartelo, perché nelle versioni più recenti di Git per Windows non è vero. Testato con la versione 2.9.3 su win7 e win10. – Superole

+1

@Superole non è vero sulla mia macchina. Ho git 2.12.2 per Windows 8.1 (più recente per il 04/17) e l'unico modo per salvare la cronologia di cui sono a conoscenza è digitare "exit" prima di fare clic sul pulsante x – Sebastian