2011年7月11日 星期一

Bash Shell 歷史命令特別功能

在 Bash Shell 留下「輸入指令的記錄」是個安全的作法,至少下了什麼指令會有一個依據,萬一下錯命令還可以看看到底做錯了什麼,只是被老闆砍頭也要有個完整 的紀錄,總不能說"好像"下錯命令,或許有些錯誤不是該自己造成的啊!因此在系統所執行命令的記錄還是完整的保留一下好了!

但是或許有時候會想來一個例外狀況,可能一些指令會有帶帳號密碼的,這時候當然就不會希望在系統上留下記錄,最簡單的做法就是 HISTSIZE=0,不過這樣的作法所有的歷史記錄都會被清除,會不會被老闆質疑「你為什麼要把命令記錄都刪除?」,當要查閱記錄的時候頭就大了。因此為了能繼續的有完整的命令記錄,但是又要避免掉一些敏感命令被記錄,這時就可以利用 HISTCONTROL 這環境變數來達成這個目的。

HISTCONTROL 三種用法

用法 1 :

$ HISTCONTROL=ignorespace

執行以上環境變數設定,之後只要是命令前有空白的話,Bash Shell 將不會記錄你執行的命令,
實作如下 :

$ echo wawa
wawa

$  echo bebo   #echo前有加空格
bebo

$ history 2
   54  echo wawa
   55  history 2
 
用法 2 :

$ HISTCONTROL=ignoredups
執行以上的變數設定,之後只要是重複下的命令,只會被記錄一次。

$ echo easylife   #echo 2 次 easylife
easylife

$ echo easylife
easylife

$ echo good   #echo 1 次 good
good

$ history 4
 59 clear
 60 echo easyfile
 61 echo good
 62 history 4

用法 3 : Ubuntu Server 10.04 內定此設定

$ echo $HISTCONTROL
ignoredups:ignorespace

沒有留言:

張貼留言