我正在使用Git for Windows(版本1.7.8-preview20111206),即使我的HOME文件夹中有.bash_history文件,它也永远不会自动更新。当我启动Git Bash时,我可以在历史命令中看到我手动添加到.bash_history文件中,但它不会自动更新。
我使用shopt -s histappend
命令确保每次关闭shell时都会保存历史记录,但它不起作用。
如果我手动使用history -w
命令,那么我的文件会更新,但我想了解为什么shopt命令不起作用,因为我理解它应该。
任何人都可以告诉我为什么会发生这种情况?
提前致谢
答案 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'