为什么 bash 有时会忘记之前键入的命令?

riv*_*low 4 linux bash history command-line ubuntu

在 Ubuntu Lucid 系统上遇到一个奇怪的案例:

bash 命令行在大多数情况下都可以正常工作,但由于某些原因有时Up无法回忆起以前的命令。它记得以前的,但就像最后一个被遗忘了。所以它必须输入或复制粘贴回来,真的很烦人......

知道是什么原因造成的吗?

bash 版本是发行版附带的版本,4.1.5(1)-release(包:4.1-2ubuntu3)

Joh*_*024 9

使用前导空格输入的命令通常不会存储在 bash 的历史记录中。这是一个特性:如果您希望 bash将命令放入历史记录中,例如像 危险的命令rm -rf ...,请在其前面放置一个空格。此外,重复的命令可能会被忽略。

此行为可通过HISTCONTROL变量进行配置。来自man bash

组织控制

以冒号分隔的值列表,用于控制命令在历史列表中的保存方式。如果值列表包含 ignorespace,则以空格字符开头的行不会保存在历史列表中。ignoreups 的值会导致匹配前一个历史条目的行不被保存。ignoreboth 的值是 ignorespace 和 ignoreups 的简写。erasedups 的值会导致在保存该行之前从历史列表中删除与当前行匹配的所有先前行。任何不在上述列表中的值都将被忽略。如果 HISTCONTROL 未设置,或不包含有效值,则 shell 解析器读取的所有行都保存在历史列表中,受制于 HISTIGNORE 的值。

要查看您的 shell 是如何配置的,请运行:

echo $HISTCONTROL
Run Code Online (Sandbox Code Playgroud)

要更改为新设置,请编辑您的~/.bashrc文件。