내 Mac의 bash 기록이 저장되지 않는 이유는 무엇입니까?


28

나는 항상 bash를 작업에 사용했으며 결코 문제가 없었습니다. 이제 기록에 명령을 다시 저장하지 않습니다. 창 터미널을 열고 몇 가지 명령을 시도하면 모든 것이 올바르게 작동하고 화살표 키를 사용하여 기록을 표시하는 것처럼 작동합니다. 그러나 창을 닫고 (.bash_history 파일에 저장 해야하는 시간) 다른 파일을 열면 마지막 명령의 흔적이 없습니다.

무엇이 잘못되었는지 어떻게 알 수 있습니까? 또는 공백에서 모든 것을 재설정하십시오.


프로필 또는 rc 파일 일 수 있습니다. 그들 안에 무엇이 있습니까?
user14492

1
.bash_history의 권한과 소유자는 무엇입니까? 광산은 600이고 내 소유입니다. 또한 $ HIST_FILE에 무엇이 있습니까?
blm

@blm 권한이 맞습니다. $ HIST_FILE 인쇄 .bash_sessions에 대해 알았습니다 . 세션이 끝날 때 OS가 해당 파일을 기록 파일에 저장할 때 문제가있는 것 같습니다. 더 이상 조사하고 싶지 않아서 간단히 집에 넣고 .bash_sessions_disable기본 행동으로 돌아가는 것을 알고 있습니다
abaini01

Apple에 버그 보고서를 제출하십시오. developer.apple.com/bug-reporting
Chris 페이지

답변:


31

나는 이걸했다:

.bash_profile파일에 변수 추가

SHELL_SESSION_HISTORY=0

터미널을 다시 시작한 후 원하는대로 작동합니다. (터미널을 닫은 후 명령을 저장했습니다)

PS 나는 또한 사용 HISTFILESIZE하고 HISTSIZE변수를

HISTSIZE는 bash 세션이 진행되는 동안 히스토리 목록의 메모리에 저장되는 행 또는 명령 수입니다.

HISTFILESIZE는 (a) 세션 시작시 히스토리 파일에 허용되고 (b) 차후 세션에서 사용하기 위해 bash 세션 종료시 히스토리 파일에 저장되는 행 또는 명령 수입니다.


3
El Capitan에서 한 줄을 추가하면 잘 작동합니다.
Aidan

2
감사! 누군가가 알게되면 왜 이것이 효과가 있는지 알고 싶습니다. (역사 = 0 모든 기록이 삭제됩니다 나의 무지 마음에 함축, 아직 반대 효과를 갖고있는 것 같아요.)
마이크 윌리엄슨

@Sysqa "중간"솔루션이 있습니까? "복원 된 각 터미널 세션에 대해 bash 명령 기록을 독립적으로 저장 및 복원"하는 기능은 일부 프로그램의 이점이있는 훌륭한 기능인 것 같습니다. 이전 구성과 어떤 종류의 구성을 가진 새로운 구성에서 이점을 얻을 수있는 방법이 있습니까?
loco.loop

8

OS X 10.11 El Capitan 부터 시스템 설치 스크립트 /etc/bashrc_Apple_TerminalResume을 위해 복원 된 각 터미널에 대해 별도의 명령 기록을 저장 / 복원하기 위해 터미널과 조정됩니다 .

/etc/bashrc_Apple_Terminal터미널 별 명령 기록을 관리하는 방법과 사용자 정의 방법에 대한 설명은 주석을 읽으 십시오.

사용자 정의 PROMPT_COMMAND하는 경우 시스템 제공 명령을 지우지 않도록 이전 값으로 연결해야합니다.

PROMPT_COMMAND="${PROMPT_COMMAND:+$PROMPT_COMMAND; }your_code_here"

EXIT신호 처리기 를 설치 한 경우 trap비슷한 작업을 수행하십시오 (또는 이전 값으로 연결하는 방법을 알 수없는 경우 처리기에서 shell_session_update를 호출하십시오).

셸을 종료하면이 코드는의 새 터미널에 터미널 기록에 저장 ~/.bash_sessions합니다. 문제가 발생하는지 확인하려면 터미널을 닫는 대신 수동으로 쉘을 종료하십시오 exit(또는 Control-D). 진행 메시지를 기록합니다. 완료되지 않았거나 어떤 종류의 경고 또는 오류 메시지가 표시되는지 확인하십시오.

일반적으로 bashrc_Apple_Terminal사용자가 호환되지 않는 사용자 정의를 수행 한 것처럼 보이는 경우 세션 별 히스토리를 감지하고 사용하지 않도록 시도합니다. 처리하지 않는 것을 찾은 것 같습니다. Apple에 버그 보고서를 제출하십시오 : https://developer.apple.com/bug-reporting/


특별한 구성을 수행하지 않았으므로 문제가 아닌 것 같습니다. PROMPT_COMMAND의 기능을 설명해 주시겠습니까?
loco.loop

@ loco.loop“Bash의 PROMPT_COMMAND 변수는 무엇입니까?”또는“PROMPT_COMMAND는 무엇을 사용합니까?”를 의미 /etc/bashrc_Apple_Terminal합니까? 후자의 경우 코드를 참조하십시오. 자세한 것은 문서화되어 있습니다. 아니면 그것에 대해 다른 Q & A를 시작해야합니다.
Chris 페이지

무슨 PROMPT_COMMAND에 대한 의미 ... @ChrisPage
loco.loop

@ loco.loop Bash 문서를 참조하거나 이에 대한 Q & A를 시작하도록 제안합니다.
Chris 페이지

6

당신이 당신의 다음 행이 있는지 확인하십시오 : 그냥 경우 RVM (루비 버전 관리자)이 설치되어 거기 다른 사람이있다 ~/.profile, ~/.bashrc또는 ~/.bash_profile파일.

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

bash_sessions가 실행되는 종료 "후크"를 막는 것은 아마도 RVM 일 것입니다.

그것은 저에게 문제였습니다. 주석을 달아보십시오.

출처 : 레딧


3

Mac OS X (10.13.6으로 업데이트 됨)을 새로 설치할 때 bash 명령 기록이 저장되지 않았습니다. .bashrc 또는 .bash_profile 파일도 없습니다. 이 경우 빈 .bashrc 파일을 추가하면 문제가 해결되었습니다.

touch .bashrc

그게 당신이 필요로하는 것 같습니다 ...


Mojave / 10.14에서도 문제를 해결하는 것 같습니다 :-)
ssc

3

새로 설치된 osx Mojave와 동일한 문제가있었습니다. 나는 내 ~/.bash_history파일을 확인 하고 이것을 보았다 :

$ ls -l ~/.bash_history -rw------- 1 root staff 599 Jan 4 20:50 /Users/gilm/.bash_history

간단히 gilm으로 다시 가져 오면 문제가 해결되었습니다. 나는 사용했다 :

sudo chown gilm /Users/gilm/.bash_history

그리고 그것은 내 문제를 해결했다.


2

.bash_logout다음을 사용하여 파일을 만들 수도 있습니다 .

shell_session_update

GitHub 의견에서 발췌


또는 수동으로 trap shell_session_update EXIT한 번 입력 하고 로그 아웃하십시오. /etc/bashrc_Apple_Terminal스크립트에는 여기에 포함하기에는 너무 지루한 단서가 있습니다.
MarkHu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.