在 Linux 中如何防止执行的命令存储在历史记录中

问题

是否可以避免在 Linux 中将命令存储在历史记录中?

回答

是的,我们可以使用以下方法在 bash shell 中执行此操作

在 bash 中有一个变量 HISTCONTROL 可以用来完成我们的任务。
默认情况下,它包含一个“ignoredups”值,根据历史命令避免保留重复的命令记录。

让我们把它改成别的东西

# export HISTCONTROL=ignorespace

让我们验证值是否已更改

# echo $HISTCONTROL 
ignorespace

现在,根据这一点,以空格开头运行的任何命令都不会被监视或者存储在历史记录或者HISTFILE下定义的文件中,默认情况下,HISTFILE是~/.bash_history。

让我们尝试运行一些带空格的命令

在运行命令之前,历史记录的输出:

# history | tail -5
 412  echo $HISTCONTROL
 413  cd /etc/httpd/conf
 414  vi httpd.conf
 415  /etc/init.d/httpd status
 416  history | tail -5

运行任何以另外空格开头的命令

#   date 

查看结果

# history | tail -5
 413  cd /etc/httpd/conf
 414  vi httpd.conf
 415  /etc/init.d/httpd status
 416  history | tail -5
417  history | tail -5

正如我们看到的,未存储执行的日期命令。

使更改永久化

刚才所做的变量更改是临时的和基于终端的,即在下次我们登录 HISTCONTROL 变量将返回其默认值。
我们需要将其设置到 bash/profile文件中,参考教程 如何在 Linux 中永久设置环境 (PATH) 变量

日期:2020-06-02 22:17:03 来源:oir作者:oir