.bash_history不会在Git for Windows中更新(git bash)

时间:2012-05-07 20:14:31

标签: windows git bash git-bash

我正在使用Git for Windows(版本1.7.8-preview20111206),即使我的HOME文件夹中有.bash_history文件,它也永远不会自动更新。当我启动Git Bash时,我可以在历史命令中看到我手动添加到.bash_history文件中,但它不会自动更新。

我使用shopt -s histappend命令确保每次关闭shell时都会保存历史记录,但它不起作用。

如果我手动使用history -w命令,那么我的文件会更新,但我想了解为什么shopt命令不起作用,因为我理解它应该。

任何人都可以告诉我为什么会发生这种情况?

提前致谢

7 个答案:

答案 0 :(得分:46)

我把它放在我的~/.bash_profile

PROMPT_COMMAND='history -a'

答案 1 :(得分:20)

正如here所述,要在Windows上保存git bash历史记录,您不能使用 X 按钮关闭终端。请改用exit命令。无论接受的答案中提到的配置如何,都将保存命令历史记录。

答案 2 :(得分:8)

创建以下文件

~/.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启动新的bash实例时,.bashrc也将运行。

在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

答案 3 :(得分:5)

如果您对Windows 8使用git bash,只需将其放在〜/ .bash_logout文件中:

history > .bash_history

显然你需要一个〜/ .bash_history文件。

问候。

答案 4 :(得分:1)

如果您在 VSCode 中使用Git bash,请参见上面C.M.的评论。

  

这适用于在Visual Studio Code中运行git的bash,但是我不得不将其放置为〜/ .bashrc而不是〜/ .bash_profile 。 - 厘米。 7月29日14:43

这为我解决了。

答案 5 :(得分:0)

我正在使用Windows 10,这是一个权限问题,我的临时解决方案是添加Everyone组并授予其对~/.bash_history文件的完全控制权。

答案 6 :(得分:0)

顺便说一下,对于那些使用 Windows 版 Git 的便携版,不需要创建 .bash_profile 或 .bashrc。只需添加到 C:<path to your Git Portable folder>\etc\bash.bashrc

PROMPT_COMMAND='history -a'