non*_*ity 10 bash command-history shopt
几天前,我有一个终端选项卡在做ssh,另一个在本地做很多工作。然后我重新启动了机器(在带有 Mavericks 的 Mac 上)。
当我再次运行终端时,我发现第二个选项卡的所有命令历史记录都不存在。只有ssh命令。
然后我搜索了如何以某种方式“合并”历史记录,发现我们需要shopt -s histappend在我们的~/.bashrc文件中做一个,以便历史记录将追加,而不是“覆盖”——我们不希望一组历史记录覆盖另一组放; 我们要追加。
但是,当我转到 OS X Yosemite 框并使用 时shopt,我看到它histappend已关闭,但是当我打开两个选项卡,一个执行echo abc另一个执行echo def并退出它们时,我再次重新打开终端并发出history命令,并且看到了echo abc和echo def命令。
然后我在 VirtualBox 上运行 Ubuntu 2014-10 并做了类似的事情,并且仍然看到两个历史记录(我首先shopt -u histappend在两个 Bash 中运行以先将选项设置为关闭)。
那么究竟是什么机制在这样做呢?那么histappend就没有意义了,是开还是关都无所谓?
我还在shopt -s histappend我的.bashrc终端中注释掉并重新启动并再次尝试,并看到两个选项卡的历史能够组合......所以这真的很奇怪,是什么导致了它?
我相信这是为一个histappend终端设置的行为。
在新终端中尝试以下操作:
shopt -s histappend
export HISTSIZE=1
export HISTFILESIZE=500
Run Code Online (Sandbox Code Playgroud)
然后关闭终端。然后,您将看到您的历史文件如何包含它已经包含的最后 499 个最后命令以及export HISTFILESIZE=50您刚刚键入的“”。您的历史记录已被追加,然后被截断为 500。
现在在另一个新终端中尝试此操作:
shopt -u histappend
export HISTIZE=1
export HISTFILESIZE=500
Run Code Online (Sandbox Code Playgroud)
再次关闭终端。您将看到现在您的终端只有一个命令“ export HISTFILESIZE=500”。
诀窍是,如果没有histappend,历史文件将被终端历史记录中当前的内容(一个命令)覆盖。
你不会注意到它的行为 if HISTFILE=HISTFILESIZE但我相信它与在多个终端上工作无关,这必须由其他东西管理......
| 归档时间: |
|
| 查看次数: |
2151 次 |
| 最近记录: |