왜 누군가가 bash에 'histappend'를 설정하지 않습니까?


36

이것이 무엇을 shopt -s histappend 의미 하는지 알아 낸 후에 는 매우 제정신이 된 것처럼 보이며 이것이 기본값이 아니라는 것에 놀랐습니다. 왜 각 쉘 출구에서 역사를 지우고 싶습니까?


@maxscchlepzig에 의해 수정 된이 옵션의 오해와는 별도로- "default"는 최소한 두 가지 소스가 있습니다 : bash'pure'또는 distro-supplied .bashrc. 전자의 경우 @Gilles가 정확할 것입니다. 후자의 의미 로, 예를 들어 2008 년 이후 데비안 -s histappend 기본값입니다 : bugs.debian.org/cgi-bin/bugreport.cgi?bug=452459
underscore_d

3
글쎄, 유닉스는 제대로 된 기본값으로 유명하지 않습니까? 나는 기본적으로 가장 비우호적 인 기본값을 기대하게되었습니다 : P (사소한 과장)
olejorgenb

답변:


34

글쎄, histappend설정되지 않은 경우 , 각 쉘 종료시 히스토리가 지워지는 것은 아닙니다. histappendbash를 사용 하지 않으면 시작시 메모리로 histfile을 읽지 않고 ( 작업 중에 새 항목이 추가됨) 쉘 종료시 마지막 HISTSIZE 행이 추가되지 않고 내역 파일에 기록됩니다 (예 : 이전 내용 바꾸기).

예를 들어, histfile에 400 개의 항목이 있으면 bash 런타임 동안 10 개의 새 항목이 추가됩니다. histsize가 500으로 설정되면 새 histfile에 410 개의 항목이 포함됩니다.

이 동작은 더 많은 bash 인스턴스를 병렬로 사용하는 경우에만 문제가됩니다. 이 경우 히스토리 파일에는 마지막 종료 쉘의 컨텐츠 만 포함됩니다.

이것과는 무관 : 프라이버시 문제로 인해 쉘 출구에서 역사를 지우고 싶은 사람들이 있습니다.


또한 보안상의 이유로 루트 사용자의 히스토리를 저장하지 않는 것이 좋습니다. 이 기능을 통해 root는 디스크에 저장하지 않고 쉘 히스토리를 가질 수 있습니다.
Mei

1
"각 쉘 종료시 히스토리가 지워진다는 의미는 아닙니다." 이것은 다른 곳에서 완벽하게 설명되어 있지만 옵션 이름의 맥락에서 일부 독자에게 간결하게 충분하지 않을 수도 있습니다 (알겠습니다. @Mei의 순열은 기록이 디스크에 도달 histappend하는지 여부와 어떤 관련이 root있습니까? 다시 말하지만 if가 아닌 쓰여진 내용 에만 영향을 미칩니다 .
underscore_d

5
bash 인스턴스가 2 개 미만인 사람이 있습니까? histappend또한 HISTCONTROL=ignoredups:erasedups:ignorespace대부분의 사람들에게 좋은 채무 불이행처럼 보입니다.
dashesy

histappend효과적인 의미가 나는 경우 HISTFILESIZE=HISTSIZE=무한 역사?
Marc.2377

@ Marc.2377 아니요, histappend동시에 실행중인 쉘의 새 기록이 없으면 마지막 종료 쉘의 항목 만 저장됩니다. Btw, 나는 HISTSIZE=부정적인 효과와 같은 효과가 있는지 모르겠습니다 HISTSIZE.
maxschlepzig

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.