Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"Git Bash here" is not preserving bash history between sessions [duplicate]

I am running Git-1.8.0-preview20121022 on Windows 7 and the install was with "Git Bash Only" (least intrusive to Windows cmd).

When I open the Git Bash from the start menu shortcut, everything is fine with the history.

But when the Git Bash here context menu (either the git-cheetah shell extension one or the simpler registry one) is what launched a session, the commands from that session are not saved to the .bash_history.

How could figure out why this is happening? Or better yet, does someone know how to fix this?

like image 922
Hari Pachuveetil Avatar asked Jan 07 '13 15:01

Hari Pachuveetil


People also ask

Why does bash history disappear?

Your Mac could be infected with malware and/or hacked, and someone else is removing your . bash_history file.

How do I save my git bash history?

As it was said here, to save git bash history on Windows you must not close the terminal with X button. Use exit command instead. History of commands will be saved then regardless of configuration mentioned in the accepted answer.

How do I see full history in bash?

The command is simply called history, but can also be accessed by looking at your . bash_history in your home folder. By default, the history command will show you the last five hundred commands you have entered.

What does .bash history do?

By default, history stores commands in RAM until you log out of the terminal. Once you log out, commands are written to disk in the ~/. bash_history file. The history buffer is limited to 1,000 command entries and the history file is limited to 2,000 entries.


3 Answers

You should be able to fix this by adding this line to your ~/.bash_profile

PROMPT_COMMAND='history -a'
like image 69
Zombo Avatar answered Oct 25 '22 22:10

Zombo


As mentioned here: https://stackoverflow.com/a/60718848/6680510

Create the following files

~/.bash_profile
~/.bashrc

And put the following line in both of them

PROMPT_COMMAND='history -a'

To do this from the console (git bash) itself use the following commands

echo "PROMPT_COMMAND='history -a'" >> ~/.bash_profile
echo "PROMPT_COMMAND='history -a'" >> ~/.bashrc

What history -a means

From history --help command

-a append history lines from this session to the history file

What is PROMPT_COMMAND ?

Bash provides an environment variable called PROMPT_COMMAND. The contents of this variable are executed as a regular Bash command just before Bash displays a prompt.

Difference between .bash_profile AND .bashrc

.bash_profile is executed for login shells, while .bashrc is executed for interactive non-login shells.

When you login (type username and password) via console, either sitting at the machine, or remotely via ssh: .bash_profile is executed to configure your shell before the initial command prompt.

But, if you’ve already logged into your machine and open a new terminal window (xterm) then .bashrc is executed before the window command prompt. .bashrc is also run when you start a new bash instance by typing /bin/bash in a terminal.

On OS X, Terminal by default runs a login shell every time, so this is a little different to most other systems, but you can configure that in the preferences.

References

https://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x264.html https://apple.stackexchange.com/questions/51036/what-is-the-difference-between-bash-profile-and-bashrc

like image 40
Muhammad Attia Avatar answered Oct 25 '22 23:10

Muhammad Attia


Putting

PROMPT_COMMAND='history -a ~/.bash_history'

into the .bash_profile did it for me.

like image 21
A Bothe Avatar answered Oct 25 '22 22:10

A Bothe