기본 bash에는 내가 역사적으로 사용한 일부 명령이 없는 것처럼 보이지만 다른 명령은 있는 이유는 무엇입니까?

기본 bash에는 내가 역사적으로 사용한 일부 명령이 없는 것처럼 보이지만 다른 명령은 있는 이유는 무엇입니까?

맥에서는 시에라.

HIST관련 설정이 표시 되지 않습니다 .

~ @ Magni (jcollum) 
$ env|grep HIST

~ @ Magni (jcollum) 
$ cat ~/.bash_profile | grep HIST

~ @ Magni (jcollum) 

하지만 내 역사에서 어제 내가 한 일 중 일부는 재부팅 후에 더 이상 존재하지 않습니다. 명령을 실행할 때마다 명령 앞에 공백을 추가하는 것은 정말 의심스럽습니다.

여기에 문제를 해결하는 방법을 알려주는 게시물이 있다는 것을 알고 있지만 알고 싶습니다.일어난 일은 다음과 같습니다.

예를 들어, 어제 실행한 것을 grep하면 curl아무것도 없습니다.

~ @ Magni (jcollum) 
$ history | grep curl 
166  curl -X POST -d [email protected] -d password=********** http://localhost:3000/login
503  hg curl 
519  history | grep curl 

400개의 명령 전? 하지만 지난 주에 bash를 12번이나 사용했다는 것을 알고 있습니다 curl(그리고 이번 주에는 수백 개의 명령을 실행할 만큼 bash를 사용하지 않았습니다).

기본적으로 나는 혼란스럽고 왜 내가 하고 있는 일이 그렇게 많이 누락되었는지 모르겠습니다. 하나의 bash 인스턴스에서만 기록을 기록할 수 있나요?

답변1

하나의 bash 인스턴스에서만 기록을 기록할 수 있나요?

이것이 지금 일어나고 있는 일입니다. 변경하기 위해 많은 노력을 기울이지 않는 한 bash에서 기록이 작동하는 방식은 다음과 같습니다.

  • Bash가 시작되면 기록 파일에서 저장된 기록을 로드합니다.
  • 명령이 실행될 때마다 bash 메모리의 기록에 추가됩니다.
  • Bash가 종료되면 누적된 기록을 기록 파일에 저장합니다.

이제 두 개의 bash 인스턴스를 시작한다고 가정합니다. 둘 다 시작 시 기록 파일을 로드합니다. 둘 다 자신이 실행하는 명령을 자체 기록에 추가합니다. 인스턴스가 종료되면 이전 기록과 자체 명령을 기록 파일에 저장합니다. 두 번째 인스턴스가 종료되면 이전 기록과 함께 저장됩니다.그것은자체 명령은 기록 파일에 기록합니다. 이 작업을 수행하면 첫 번째 종료 인스턴스의 기록이 지워집니다.

Bash의 기록 저장 메커니즘은 너무 간단합니다. 기록에는 실행 중인 다른 모든 인스턴스가 적용됩니다. 마지막으로 종료된 인스턴스는 다른 인스턴스의 기록을 삭제합니다. 솔루션에는 전체 메모리 내 기록으로 기록 파일을 덮어쓰는 대신 기록 파일에 새 기록을 추가하거나 실행 직후 기록 파일에 줄을 추가하는 것이 포함됩니다. 바라보다여러 터미널 창에서 bash 기록 유지그리고여러 터미널 창에서 bash 기록 유지이 변형과 기타 변형을 구현하는 몇 가지 방법을 알아보세요.

가장 간단한 해결책은 기본적으로 합리적인 방식으로 기록을 저장하는 zsh를 실행하는 것입니다. 특히 Apple이 2009년 이후 출시된 버전의 라이선스를 좋아하지 않기 때문에 이전 버전의 bash에 갇힌 macOS를 실행하고 있으므로 이 작업을 수행하는 것이 좋습니다.

관련 정보