나는 lithist 옵션을 활성화했는데, 이로 인해 bash 기록이 여러 줄에 저장되었지만 어느 날 lithist 옵션이 작동하지 않았습니다.
lithist를 활성화하면 하나의 기록 항목에 여러 줄을 저장할 수 있습니다. 괄호 안에 일부 명령을 입력하는 경우:
~:$ (
> echo hey
> echo bye
> )
hey
bye
그런 다음 누르면 ctrl-p
다음이 표시됩니다.
~:$ (
echo hey
echo bye
)
나쁜 날에는 lithist가 깨져서 사람들이 여러 줄이 여러 항목으로 분할되는 것을 볼 수 있습니다.
# press ctrl-p
~:$ )
# press ctrl-p again
~:$ echo bye
이 문제는 이전에도 여러 번 나타났습니다. 이는 일반적으로 크기가 ~/.bash_history
변수의 크기를 초과 HISTFILESIZE
하고 bash가 이를 잘라내어 ~/.bash_history
기록 파일의 형식이 손상되기 때문입니다. 한번은 기록 파일의 시작 줄 중 일부를 삭제한 다음 셸을 다시 시작했더니 기록이 복원되었습니다.
하지만 이번에는 내역 파일 전체를 삭제해도 복구가 불가능합니다.
내 구성:
HISTSIZE=1000
HISTFILESIZE=8000
shopt -s cmdhist lithist
lithist가 작동 중일 때 명령 출력은 history
다음과 같아야 합니다.
4519* 2019-08-24 15:46:05 (
echo hey
echo bye
)
4520 2019-08-24 16:00:21 history
4521 2019-08-24 16:00:23 history | less
lithist가 손상되면 기록의 출력도 손상됩니다.
1 2019-08-24 14:25:04 \rm .bash_history
2 2019-08-24 14:25:13 (
3 2019-08-24 14:42:26 echo a
4 2019-08-24 14:42:26 echo c
5 2019-08-24 14:42:26 )
그러나 내 기록 파일은 괜찮아 보입니다.
#1566627904
\rm .bash_history
#1566627913
(
echo a
echo c
)
#1566627926
echo bye
이 동작은 CentOS 6.10에서 발생하며 수정할 수 없지만 debianstretch를 사용하는 다른 컴퓨터에서는 수정할 수 있습니다.