"Git Bash here"无法在会话之间保留bash历史记录。

15
我正在运行 Git-1.8.0-preview20121022,我的操作系统是Windows 7,并且安装了"Git Bash Only"(对 Windows 命令提示符最不具侵入性)。
当我从开始菜单的快捷方式打开 Git Bash 时,历史记录一切正常。
但是当 "Git Bash here" 上下文菜单(无论是 git-cheetah shell 扩展版还是更简单的注册表版)启动会话时,该会话中的命令不会保存到 .bash_history 中。
我应该如何找出原因?或者更好的是,有人知道如何修复这个问题吗?
3个回答

21

通过在您的~/.bash_profile中添加此行,您应该能够解决这个问题。

PROMPT_COMMAND='history -a'

1
谢谢!我最终使用了 HISTCONTROLHISTIGNORE - Hari Pachuveetil
对我来说不起作用。我需要设置一个HISTFILE。 - swidnikk
这对我在 Win 7 64 位上起作用。曾经郁闷了一段时间,因为它不起作用-后来意识到我使用 Windows 换行符创建了它,这破坏了代码。如果遇到问题,请双重检查您是否使用支持 Unix 换行符的编辑器进行了保存-而不是例如 Notepad! - psdie

13

如下所述:https://dev59.com/nWkv5IYBdhLWcg3wlR31#60718848

创建以下文件

~/.bash_profile
~/.bashrc

将以下这行代码放在两个文件中:

PROMPT_COMMAND='history -a'

要在控制台(Git Bash)中执行此操作,请使用以下命令:

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

什么是history -a意思?

来自history --help命令

-a 将本次会话的历史记录行追加到历史文件中

PROMPT_COMMAND是什么?

Bash提供了一个名为PROMPT_COMMAND的环境变量。在Bash显示提示符之前,该变量的内容被执行为常规的Bash命令。

.bash_profile.bashrc之间的区别是什么?

.bash_profile用于登录shell执行,而.bashrc用于交互式非登录shell执行。

当您通过控制台登录(键入用户名和密码)时,无论是坐在计算机旁还是通过ssh远程登录:都会在初始命令提示符之前执行.bash_profile以配置您的shell。

但是,如果您已经登录到您的计算机并打开了一个新的终端窗口(xterm),则会在窗口命令提示符之前执行.bashrc。 当您在终端中键入/bin/bash时,也会运行.bashrc以启动新的bash实例。

在OS X上,Terminal默认每次运行登录shell,因此与大多数其他系统有所不同,但您可以在首选项中进行配置。

参考资料

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


5
放置
PROMPT_COMMAND='history -a ~/.bash_history'

把它添加到 .bash_profile 文件中对我来说就可以了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接