Environment-Variables

更改 .sqlite_history 文件的位置

  • October 3, 2019

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);

因此,要更改它,該執行緒中提到的其他選項之一編輯原始碼並重新編譯。

要列出一些可能的替代方案,

  1. make~/.sqlite_history到另一個文件的符號連結。
  2. 只需執行HOME=/tmp sqlite3以使程序將歷史記錄保存在 中/tmp/.sqlite_history,儘管這假設您不需要命令環境中的真實主目錄。
  3. 編輯二進製文件並將"%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
  1. 使用我在另一個問題中提出的LD_PRELOAD 墊片"/tmp/adb.log"在通話期間將一個文件名(在這種情況下)更改為另一個文件名open()

引用自:https://unix.stackexchange.com/questions/306890