Environment-Variables
更改 .sqlite_history 文件的位置
sqlite3
將命令歷史儲存在 中.sqlite_history
,預設情況下創建於:$HOME/.sqlite_history
如何將此位置更改為其他位置?
例如,這是可能的
mysql
,我可以在其中定義環境變數MYSQL_HISTFILE=/path/to/whatever/file
但我找不到任何相應的環境變數
sqlite3
export SQLITE_HISTFILE=/tmp/history
沒有效果。我發現一個文章有人問同樣的問題,但沒有給出有用的答案。
從版本 3.25.3 開始,您可以簡單地設置 SQLITE_HISTORY 來更改歷史文件名,就像 mattmc3 寫的那樣。在之前的版本中,它在 shell.c(版本 3.14.1)的第 5576 行中被硬編碼:
sqlite3_snprintf(nHistory, zHistory,"%s/.sqlite_history", zHome);
因此,要更改它,該執行緒中提到的其他選項之一
是編輯原始碼並重新編譯。
要列出一些可能的替代方案,
- make
~/.sqlite_history
到另一個文件的符號連結。- 只需執行
HOME=/tmp sqlite3
以使程序將歷史記錄保存在 中/tmp/.sqlite_history
,儘管這假設您不需要命令環境中的真實主目錄。- 編輯二進製文件並將
"%s/.sqlite_history"
Hoov 找到的字元串替換為另一個具有相同字節數的字元串,例如"/tmp/sqlitehistory"
:sed < /usr/bin/sqlite3 's|%s/.sqlite_history|/tmp/sqlitehistory|' >/tmp/sqlite3 cmp -l /usr/bin/sqlite3 /tmp/sqlite3 # check no extraneous differences chmod +x /tmp/sqlite3 /tmp/sqlite3
- 使用我在另一個問題中提出的
LD_PRELOAD
墊片"/tmp/adb.log"
在通話期間將一個文件名(在這種情況下)更改為另一個文件名open()
。