스크린 세션 전체에서 bash 명령 기록을 자동으로 저장합니다.

스크린 세션 전체에서 bash 명령 기록을 자동으로 저장합니다.

스크린 세션에 연결되어 있습니다. 몇 가지 작업을 수행한 후 분리합니다. 그러면 이전 명령 history | tail만 표시되고 screen -rscreen 세션에서 실행되는 명령은 표시되지 않습니다. 기본적으로 내역은 screen 세션이 실행되는 동안과 분리된 후에 다른 내용을 표시합니다.

screen 세션의 명령이 bash기록에 추가되도록 하려면 어떻게 해야 합니까?

구성: 화면 4.0.3, bash 4.1.2

답변1

다른 셸은 일반적으로 셸을 종료할 때 발생하는 기록 파일에 플러시(기록)될 때까지 자체 기록을 메모리에 유지하지만 다음과 같이 재정의할 수 있습니다.

export PROMPT_COMMAND="history -a; history -c; history -r; ${PROMPT_COMMAND}"

이는 새 프롬프트가 실행될 때마다(즉, 명령을 실행할 때마다) 내역이 먼저 파일에 추가된 다음 현재 쉘의 메모리에서 지워진 다음 현재 쉘이 파일에서 내역을 다시 로드함을 의미합니다. .

이는 화면에서든 여러 창에서든 시스템에 있는 계정의 모든 셸이 다른 모든 셸의 모든 명령 기록을 유지하고 표시함을 의미합니다.

이 줄을 .bashrc에 넣으세요. 다음을 추가하여 기록 크기를 늘릴 수도 있습니다.

export HISTSIZE=5000

2017년 11월 24일 편집: 방금 PROMPT_COMMAND에 문제가 있다는 것을 깨달았습니다. 자체적으로 참조하므로 이를 복제하면 source .bashrc변수에 점점 더 많은 복사본이 추가됩니다. history -a; history -n그래서 당신이 하고 싶은 일은 다음과 같습니다:

export PROMPT_COMMAND='history -a; history -n; <whatever other commands you want...>'

관련 정보