공백으로 시작하는 명령이 bash 기록에 표시되지 않는 이유는 무엇입니까? [복사]

공백으로 시작하는 명령이 bash 기록에 표시되지 않는 이유는 무엇입니까? [복사]

Bash에서 Ctrl-R을 사용하여 이전 명령을 검색할 때 명령이 공백으로 시작하면 작동하지 않는 이유는 무엇입니까? 이전 명령과 일치하도록 만들 수 있나요?

$  date
Fri Nov 23 ... 2018
(failed reverse-i-search)` date': cd database/

답변1

환경 변수의 값을 확인하십시오 HISTCONTROL. 값에 ignorespace또는 이 포함되어 있으면 ignoreboth공백으로 시작하는 명령은 명령 기록에 추가되지 않습니다.

에서 man bash:

HISTControl: 명령이 기록 목록에 저장되는 방식을 제어하는 ​​콜론으로 구분된 값 목록입니다. 값 목록에 공백 무시가 포함되어 있으면 공백 문자로 시작하는 줄은 기록 목록에 저장되지 않습니다. 무시된 값으로 인해 이전 기록 항목과 일치하는 행이 저장되지 않습니다. ignoreboth의 값은ignorespace와ignoredups의 약어입니다. 삭제된 값을 사용하면 현재 행과 일치하는 모든 이전 행이 행을 저장하기 전에 기록 목록에서 삭제됩니다. 위 목록에 없는 값은 무시됩니다. HISTControl이 설정되지 않았거나 유효한 값을 포함하지 않는 경우 쉘 파서가 읽은 모든 행은 HISTIGNORE 값에 따라 기록 목록에 저장됩니다. 여러 줄 복합 명령의 두 번째 및 후속 줄은 테스트되지 않으며 HISTControl 값에 관계없이 기록에 추가됩니다.

답변2

이는 의도적인 것입니다. 공백은 명령의 해석을 변경하지 않습니다. 기록은 공백으로 시작하는 명령을 무시하므로 기록하지 않으려는 명령을 입력할 수 있습니다. 이 작업을 수행하는 동안 같은 컴퓨터에 있는 누군가가 당신을 염탐할 수 있기 때문에 이는 보안 메커니즘이 아닐 수도 있습니다.

재구성할 수 있을 것 같아요. History 아래의 bash 매뉴얼을 참조하세요.

관련 정보