在linux中环境变量HISTCONTROL可以控制历史的记录方式。
HISTCONTROL有以下的选项:
ignoredups 默认,忽略重复命令
ignorespace 忽略所有一空格开头的命令
ignoreboth ignoredups 和 ignorespace 的组合
erasedups 删除重复命令
下面我来演示一下HISTCONTROL 及 其选项的用法:
linux默认忽略连续执行的相同命令,也就是默认设置是ignoredups,
在生产中我们在输入命令时有时会暴露一些重要信息,如果我们不想将这些重要信息记录在历史命令列表中我们可以将HISTCONTROL变量的改为ignorespace,在命令行更改完变量后,在我们输入命令前加空格再执行,我们的历史列表将不记录此次执行的命令:
#HISTCONTROL=ignorespace
# pwd
/root
#history
1 HISTCONTROL=ignorespace
2 history
#history
1 HISTCONTROL=ignorespace
2 history
3 history
pwd 的命令没有被记录,因为前面加了空格,但是执行两次的history却被重复的记录了,因为我们把系统默认的忽略重复命令的变量改成了加空格忽略的变量,这时我们可以更改ignoreboth来解决这个问题:
#HISTCONTROL=ignoreboth
# pwd
/root
#history
1 HISTCONTROL=ignoreboth
2 history
#history
1 HISTCONTROL=ignorespace
2 history
#hostname
localhost.localdomain
#cd
#hostname
localhost.localdomain
#cd
#history
1 HISTCONTROL=ignorespace
2 history
3 hostname
4 cd
5 hostname
6 cd
这时就出现了另一个问题,不连续执行的相同的命令被历史命令列表记录了,我们用erasedups可以消除这个效果:
#HISTCONTROL=earsedups
#hostname
localhost.localdomain
#cd
#hostname
localhost.localdomain
#cd
#history
1 HISTCONTROL=ignorespace
2 hostname
3 cd
4 history
但请注意以上这些在命令行更改的环境变量设置只是临时的,如果用户被注销了,设置会恢复,如果我们想彻底更改这个用户的环境变量,我们可以到用户目录下的.bash_profile文件中进行更改,更改后用命令. . bash_profile来执行配置,如果你想更改所有用户的设置可以到根目录下/etc/profile文件中进行更改,再重启。
下面我讲命令:
Ctrl + o 这条命令是执行当前命令,并重新显示本命令:
#pwd
/root
#pwd
/root
#pwd
上面的代码可能不是很好理解,我描述一下,一般当你用Enter执行完一条命令后,提示符后是不会再次出现任何命令的,但是如果你用Ctrl + o来执行命令的话,执行完毕后提示符后面仍然会像是这条命令。
这个时候我发现了一件奇怪的事情!!!
当你更改历史记录方式的环境变量为ignorespace 或 ignoreboth 或 erasedups 时,Ctrl + o这条命令将会失效,会如同Enter一样能执行命令,不能在提示符后重新显示刚执行的命令,但是系统默认的ignoredups 历史记录方式环境变量不会影响Ctrl + o功能的实现。
小总结加发现的一个小秘密,望批评指正!!!
原创文章,作者:liu-linux,如若转载,请注明出处:http://www.178linux.com/69250