在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.www58058.com/69250