lithist 옵션으로 인해 bash 여러 줄 기록이 깨졌습니다.

lithist 옵션으로 인해 bash 여러 줄 기록이 깨졌습니다.

나는 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를 사용하는 다른 컴퓨터에서는 수정할 수 있습니다.

관련 정보