"Git Bash here"并不保留会话之间的bash历史记录

Har*_*til 9 bash shell msysgit windows-7 git-bash

我在Windows 7上运行Git-1.8.0-preview20121022,安装时只使用"Git Bash"(对Windows cmd最少侵入).

当我从开始菜单快捷方式打开Git Bash时,历史记录一切正常.

但是当Git Bash here上下文菜单(git-cheetahshell扩展一个或更简单的注册表)是启动会话的时候,来自该会话的命令不会保存到.bash_history.

怎么能搞清楚为什么会这样?或者更好的是,有人知道如何解决这个问题吗?

小智 16

您应该可以通过将此行添加到您的帐户来解决此问题 ~/.bash_profile

PROMPT_COMMAND='history -a'
Run Code Online (Sandbox Code Playgroud)


小智 7

正如这里提到的 /sf/answers/4250319391/

创建以下文件

~/.bash_profile
~/.bashrc
Run Code Online (Sandbox Code Playgroud)

并将以下行放在他们两个中

PROMPT_COMMAND='history -a'

要从控制台 (git bash) 本身执行此操作,请使用以下命令

echo "PROMPT_COMMAND='history -a'" >> ~/.bash_profile
echo "PROMPT_COMMAND='history -a'" >> ~/.bashrc
Run Code Online (Sandbox Code Playgroud)

什么history -a意思

history --help命令

-a 将此会话的历史行附加到历史文件中

什么是PROMPT_COMMAND

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

.bash_profileAND之间的区别.bashrc

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

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

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

在 OS X 上,默认情况下终端每次都会运行登录 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


A B*_*the 5

推杆

PROMPT_COMMAND='history -a ~/.bash_history'
Run Code Online (Sandbox Code Playgroud)

进入.bash_profile为我做到了。