bash가 때때로 이전에 입력 한 명령을 잊어 버리는 이유는 무엇입니까?


4

우분투 루시드 시스템에서 이상한 사건이 발생했습니다.

bash 명령 줄은 대부분 정상적으로 작동하지만 때로는 어떤 이유로 Up이전 명령을 호출하지 못할 수도 있습니다. 이전 것들을 기억하지만 마지막 것을 잊어 버린 것과 같습니다. 따라서 입력하거나 복사하여 다시 붙여 넣어야합니다.

이 문제의 원인은 무엇입니까?

bash 버전은 배포판 4.1.5 (1) 릴리스와 함께 제공되는 버전입니다 (패키지 : 4.1-2ubuntu3)

답변:


9

선행 공백으로 입력 한 명령은 일반적으로 bash 기록에 저장되지 않습니다. 이것은 기능입니다 : bash 가 위험한 명령과 같은 명령을 기록에 넣지 않으 려면 rm -rf ...앞에 공백을 두십시오. 또한 중복 명령이 무시 될 수 있습니다.

이 동작은 HISTCONTROL변수를 사용하여 구성 할 수 있습니다. 보낸 사람 man bash:

히스 트롤

히스토리 목록에서 명령이 저장되는 방법을 제어하는 ​​콜론으로 구분 된 값 목록. 값 목록에 ignorespace가 포함되어 있으면 공백 문자로 시작하는 행이 기록 목록에 저장되지 않습니다. ignoreups 값은 이전 히스토리 항목과 일치하는 행을 저장하지 않습니다. ignoreboth 값은 ignorespace 및 ignoreups의 약어입니다. erasedups 값은 해당 행이 저장되기 전에 현재 행과 일치하는 모든 이전 행이 히스토리 목록에서 제거되도록합니다. 위 목록에없는 값은 무시됩니다. HISTCONTROL이 설정되어 있지 않거나 유효한 값을 포함하지 않으면 셸 파서가 읽은 모든 행이 HISTIGNORE 값에 따라 히스토리 목록에 저장됩니다.

쉘 구성 방법을 보려면 다음을 실행하십시오.

echo $HISTCONTROL

새로운 설정으로 변경하려면 ~/.bashrc파일을 편집하십시오 .


오른쪽에 .bashrc있었다 HISTCONTROL=ignoredups:ignorespace.
riverflow

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