fra*_*mon 36 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命令不起作用,因为我理解它应该.
任何人都可以告诉我为什么会发生这种行为?
提前致谢
小智 51
我把它放在我的 ~/.bash_profile
PROMPT_COMMAND='history -a'
Run Code Online (Sandbox Code Playgroud)
fra*_*acz 21
正如在这里所说的,要在Windows上保存git bash历史记录,您不能使用X按钮关闭终端.请改用exit命令.无论接受的答案中提到的配置如何,都将保存命令历史记录.
And*_*ddo 16
创建以下文件
~/.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
Syl*_*ain 12
Pablo R. 和 LinuxSecurityFreak 在Unix Stackexchange上有一个更完整的答案。将以下内容添加到您的~/.bashrc:
# Avoid duplicates
HISTCONTROL=ignoredups:erasedups
# When the shell exits, append to the history file instead of overwriting it
shopt -s histappend
# After each command, append to the history file and reread it
PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND$'\n'}history -a; history -c; history -r"
Run Code Online (Sandbox Code Playgroud)
不过请小心:
此解决方案的问题
PROMPT_COMMAND在于,每个历史记录项的编号在每个命令后都会发生变化。例如,如果您键入history(1)ls(2)rm,然后!1重复 (1) ,则历史记录编号可能会更改并且可能会运行该rm命令。克里斯·金普顿
如果您对Windows 8使用git bash,只需将其放在〜/ .bash_logout文件中:
history > .bash_history
Run Code Online (Sandbox Code Playgroud)
显然你需要一个〜/ .bash_history文件.
问候.
如果您在VSCode 中使用 Git bash,请参阅上面的 CM 评论。
这适用于在 Visual Studio Code 中运行 git 的 bash,但我不得不把它放在 ~/.bashrc 而不是 ~/.bash_profile。– CM 7 月 29 日 14:43
这为我解决了它。