两天前,我像往常一样使用电脑,突然发现我在 mate-terminal 中使用的命令没有保存在历史记录中。我尝试安装gnome-terminal
。但它还是一样。我对此进行了研究,发现这可能是权限问题,~./bash_history
但我检查了它们,它们很好。我不认为这是 BASH 的问题,因为我尝试使用XTerm
并且它确实写入了文件。
编辑:这是建议命令的输出:
伴侣终端:
mike@mikeUBU:~$ echo "$HISTFILE"
/home/mike/.bash_history
mike@mikeUBU:~$ ls -l ~/.bash_history
-rw------- 1 mike mike 288 Jul 30 01:59 /home/mike/.bash_history
mike@mikeUBU:~$ history | wc
13 57 431
mike@mikeUBU:~$ echo $HISTFILESIZE
2000
mike@mikeUBU:~$ ps -p $$
PID TTY TIME CMD
3647 pts/0 00:00:00 bash
X终端:
mike@mikeUBU:~$ echo "$HISTFILE"
/home/mike/.bash_history
mike@mikeUBU:~$ ls -l ~/.bash_history
-rw------- 1 mike mike 288 Jul 30 01:59 /home/mike/.bash_history
mike@mikeUBU:~$ history | wc
15 65 480
mike@mikeUBU:~$ echo $HISTFILESIZE
2000
mike@mikeUBU:~$ ps -p $$
PID TTY TIME CMD
3850 pts/0 00:00:00 bash
答案1
我无法解决这个问题。我的解决方案是重新安装 Ubuntu MATE,但只安装系统。我的主文件夹在另一个分区中。我选择了保留文件的安装方法。一些应用程序也被保留了下来。重新安装后,问题就解决了。
答案2
历史文件的内容是什么?内容会改变吗?是覆盖而不是追加吗?
如何判断,就是给出history
命令,然后给出其他命令,date
echo $PWD
which man
不管怎样,然后运行历史命令。如果有任何变化,那么 bash 历史文件很可能被覆盖,而不是被追加。如果它总是相同的,就像它在一段时间前写了一些命令历史,并且从那时起就没有改变过……那么我不知道,但知道它会很有用。
无论如何,我敢打赌解决方案就在你的 .bashrc 文件中的某个地方,其中保存了处理历史记录的各种设置。
以下是我的 .bashrc 文件中的一些历史记录设置:
# don't put duplicate lines or lines starting with space in the history.
# See bash(1) for more options
HISTCONTROL=ignoreboth
# append to the history file, don't overwrite it
shopt -s histappend
# for setting history length see HISTSIZE and HISTFILESIZE in bash(1)
HISTSIZE=1000
HISTFILESIZE=2000
shopt 内置命令表示如果设置,则当 shell 退出时,历史列表将附加到由 HISTFILE 变量的值命名的文件中,而不是覆盖该文件。
您可以搜索到 .bashrc 的底部,看看是否有历史命令的不同功能或参数,文件末尾的那些将会生效。
如果您的 .bashrc 文件看起来像这样,或者您可以发布更多详细信息,我很乐意在今晚进一步研究这个问题。我有点惊讶 xterm 没有单独的历史记录日志。如果您同意这样做,发布您的 .bashrc 文件可能会有所帮助。