.sqlite_history 파일의 위치 변경

.sqlite_history 파일의 위치 변경

sqlite3.sqlite_history기본적으로 다음 위치에 생성된 명령 기록을 에 저장합니다 .

$HOME/.sqlite_history

이 위치를 다른 곳으로 어떻게 변경할 수 있나요?

예를 들어 mysql, 이것이 가능합니다. 다음에서 환경 변수를 정의할 수 있습니다.

MYSQL_HISTFILE=/path/to/whatever/file 

하지만 해당 환경 변수를 찾을 수 없습니다.sqlite3

export SQLITE_HISTFILE=/tmp/history 

효과가 없습니다. 내가 하나 찾았어우편 엽서어떤 분이 같은 질문을 주셨는데 도움이 되는 답변이 없었습니다.

답변1

버전 3.25.3부터 mattmc3이 작성한 것처럼 간단히 SQLITE_HISTORY를 설정하여 기록 파일 이름을 변경할 수 있습니다. 이전 버전에서는 shell.c의 5576행(버전 3.14.1)에 하드코딩되었습니다.

sqlite3_snprintf(nHistory, zHistory,"%s/.sqlite_history", zHome);

따라서 이를 변경하려면 이 스레드에서 언급된 다른 옵션 중 하나는 소스 코드를 편집하고 다시 컴파일하는 것 입니다 .

답변2

몇 가지 가능한 대안을 나열하고,

  1. ~/.sqlite_history다른 파일에 대한 심볼릭 링크를 만듭니다 .

  2. HOME=/tmp sqlite3프로그램이 에 기록을 저장하도록 실행하면 됩니다 /tmp/.sqlite_history. 단, 이는 명령 환경에 실제 홈 디렉터리가 필요하지 않다고 가정합니다.

  3. 바이너리 파일을 편집하고 Hoov가 찾은 문자열을 "%s/.sqlite_history"동일한 바이트 수의 다른 문자열로 바꿉니다. 예 "/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
    
  4. 사용LD_PRELOAD 틈 메우는 물건나는 또 다른 질문에서 통화 "/tmp/adb.log"중에 하나의 파일 이름(이 경우)을 다른 파일 이름으로 변경하라고 제안했습니다 open().

답변3

2018년 10월 10일 기준새로운 변수가 생겼나봐요를 추가하는 $SQLITE_HISTORY것은 이 문제를 해결하는 것입니다.

관련 정보