最近在下指令時,常常覺得幾個月前下的指令怎麼都不會自動提示,甚至連指令紀錄也都翻不到,細查之下才發現,原來預設在 macOS 上預設的指令紀錄上限只有 2,000 筆。
如何看預設的指令紀錄上限
-
Bash
-
HISTSIZE
決定~/.bash_history
檔案中,最多可以儲存多少條指令紀錄,預設的寫入上限是 500 筆,如果設定小於 0,則是代表沒有上限,例如:-1
# 預設的指令紀錄上限 $ echo $HISTSIZE # 500 # 根據你的電腦記憶體做上限的調整,例如調整為 **1,000,000** 筆 $ echo "export HISTSIZE=1000000" >> ~/.bashrc && source ~/.bashrc # 設定成沒有上限可能會因為 .bash_history 檔案過大,導致 bash 變慢 $ echo "export HISTSIZE=-1" >> ~/.bashrc && source ~/.bashrc
-
-
Zsh
-
SAVEHIST
決定當前的 Zsh session 結束時,要將多少條指令紀錄寫入~/.zsh_history
檔案中,預設的寫入上限是 1,000 筆# 預設的指令紀錄上限 echo $SAVEHIST # 1000 # 根據你的電腦記憶體做上限的調整,例如調整為 **1,000,000** 筆 $ echo "export SAVEHIST=1000000" >> ~/.zshrc && source ~/.zshrc
-
HISTSIZE
決定~/.zsh_history
檔案中,可以儲存多少條指令紀錄,預設的寫入上限是 2,000 筆# 預設的指令紀錄上限 $ echo $HISTSIZE # 2000 # 根據你的電腦記憶體做上限的調整,例如調整為 **1,000,000** 筆 $ echo "export HISTSIZE=1000000" >> ~/.zshrc && source ~/.zshrc
-
其他在 Zsh 上優化指令紀錄檔案儲存與效能的建議調整參數與設定
# 1. 在到達 HISTSIZE 指令紀錄上限時,優先清除重複的指令紀錄 $ echo "setopt HIST_EXPIRE_DUPS_FIRST" >> ~/.zshrc && source ~/.zshrc # 確認 HIST_EXPIRE_DUPS_FIRST 設定成功 $ setopt | grep "histexpiredupsfirst" # histexpiredupsfirst # 2. 不要記錄之前已經記錄過的指令紀錄 $ echo "setopt HIST_IGNORE_DUPS" >> ~/.zshrc && source ~/.zshrc # 確認 HIST_IGNORE_DUPS 設定成功 $ setopt | grep "histignoredups" # histignoredups # 如果要取消設定 $ unsetopt HIST_EXPIRE_DUPS_FIRST
-