難免不想讓人知道你操作過那些指令
在 Linux Bash 下過的指令紀錄,可用 history 指令查詢。
下過的指令,會先存放在 buffer,退出 bash 時,再寫入記錄檔。因此,之後登入時,也能看到之前下過的指令。
history操作紀錄相關的幾個環境變數:
刪除全部的操作紀錄:
只刪除這次登入後的操作紀錄:
說明:
下過的指令,會先存放在 buffer,退出 bash 時,再寫入記錄檔。因此,之後登入時,也能看到之前下過的指令。
history操作紀錄相關的幾個環境變數:
- 操作歷史紀錄,儲存的檔案位置。(操作歷史紀錄檔)(.bash_history)
# echo $HISTFILE /root/.bash_history
-
操作歷史紀錄檔,最多儲存幾筆。
# echo $HISTFILESIZE 1000
-
history 最多列出幾筆(在記憶體中存放的筆數)
# echo $HISTSIZE 1000
刪除全部的操作紀錄:
# history -c # history -w說明:「history -c」會刪除「下 history 指令時,列出的操作紀錄」, 但不會刪除「.bash_history」(HISTFILE)的檔案內容,為避免重新登入後,又讀取「.bash_history」(HISTFILE)的檔案內容, 所以須再用「history -w」寫入目前已清空的操作紀錄。
只刪除這次登入後的操作紀錄:
-
方法一:清空 HISTFILE 變數內容,則登出時,不會將本次操作紀錄儲存到 HISTFILE 設定的檔案。
# unset HISTFILE
-
方法二:將 HISTSIZE 設為0,下「history」指令時,也不會列出指令(記憶體中沒存放指令紀錄?),則登出時,不會更新記錄檔內容(?)。
(註:參考資料是寫會刪除全部紀錄,但我測試是只有不會儲存本次操作紀錄)
# HISTSIZE=0
-
方法三:強制刪除本次登入 Bash 的 PID,則本次操作紀錄,不會儲存到記錄檔。
# kill -9 $$
說明:
- 「$$」的變數內容是本次登入的 PID,一般和「$BASHPID」一樣,但有時不同(在 subshell 中會不同)。
# echo $$ 4308 # echo $BASHPID 4308 # (echo $BASHPID) 4376 # (echo $BASHPID $$) 4377 4308
- 「subshell」不等於「Bash 裡面再執行一次 Bash」。
「subshell」,可以訪問父 Shell 的任何變數。
「Bash 裡面再執行一次 Bash」,只能訪問父 Shell 的環境變數。
TestAA:自訂的變數
HISTSIZE:環境變數
# TestAA=10 # HISTSIZE=3 # echo $TestAA 10 # echo $HISTSIZE 3
# (echo $TestAA) 10 # (echo $HISTSIZE) 3
# bash # echo $TestAA (無資料) # echo $HISTSIZE 3
沒有留言:
張貼留言