zsh-autosuggestions이 동작을 안 해요

불타는강정·2021년 12월 29일
0
post-thumbnail

새 회사로 이직해서 oh-my-zsh 모든 설정을 마친 강정. 이전에도 잘 사용하던 zsh-autosuggestions인데 이상하게 터미널을 새로 껐다 킬때마다 자꾸 기록이 날라가는 것 같은 느낌이 들었다. 아니 이게 터미널을 유지하면 기록이 남는데 왜 새 터미널만 생성하면 날라가는거지?? 의문이 들었다.

zsh-autosuggestions 플러그인을 다시 설치해보자

zsh-autosuggestions이 잘 동작을 안 하니깐 먼저 플러그인을 다시 설치하려고 했다. autosuggestion not working을 구글링해서 여러 이슈를 찾아보니 다들 설치에서 문제를 겪고 있었다. 대부분의 해결책 : soure명령어를 사용해서 적용해보세요~ 내 문제상황이랑은 다른 것 같았다.

그런데 생각해보니 zsh-autosuggestions는 history를 기반으로 동작하고? 그럼 history가 문제인게 아닐까? 생각이 들었다. 혹시나 싶어 터미널을 열어서 history를 확인해봤는데 새로운 터미널을 열 때마다 history가 리셋되는 걸 확인했다.

history를 유지하는 방법

이제 history가 계속 저장되지 않는 문제를 확인했으니 history를 유지하는 방법을 구글링했다. linux history keep 이런 식으로 찾아봤는데 다들 setopt histappend를 해라~ HISTFILE, HISTSIZE, HISTFILESIZE를 확인해라 이런 말들이었다. 실제로 echo로 환경변수 값을 확인해보니 저장 파일 경로도, history 사이즈도 잘 설정되었다. 이렇게 보니 history 세팅 관련 문제는 아닌 것 같았다. 실제로 이전 맥에서는 이런 설정을 하지 않았는데도 잘 돌아갔으니깐.

chwon을 사용

history에 좌절하고 있다가 답변의 대댓글에 나는 저렇게 해도 잘 동작하지 않았는데 chown을 하니 됐다~ 라는 글을 봤다. 아니 소유자가 나일게 분명한데 왜 이걸 하는거지? 하면서도 본인 계정을 넣었는데 놀랍게도 history가 저장되기 시작했다!!!

다시 확인해보니 이전에 소유자의 계정이 root여서 문제였다!!

여전히 남은 의문증

애초에 히스토리가 어떻게 저장되고 있었을까? history를 입력하면 처음 터미널을 켰을 때부터 명령어가 남아있는데?? 그런데 히스토리 파일은 권한이 400이라 작성이 안 되고 있었을거고?? 어...? 그러고보니 .zsh_history 파일을 열었을 때 명령어가 저장이 되고 있지 않았었다. 처음에는 이 경로로 저장이 안 되는 줄 알았는데 echo $HISTFILE를 확인해보면 또 .zsh_history가 잘 나온다. 이런 근거들로 종합해서 생각해보면 히스토리를 임시로 저장했다가 나중에 저장하는 건 아닐까! 파일에 저장하려고 보니 권한이 400이라서 못 저장한거고!!!

history 동작방식

내 생각이 맞는지 확인하기 위해 how does linux history works 이런 식으로 히스토리가 어떻게 동작하는지 찾아보았다. 링크에서 확인해보니 내가 생각한 방식이 맞았다.

로그인 했을 시 history는 버퍼에 저장이 되고 로그아웃 했을 때 history 파일에 저장이 된다! 하긴 명령어 작성할 때마다 파일 읽기를 하면 느릴 것 같긴하다.

후기

처음에 플러그인 문제라 생각하다가 history가 문제라는 걸 깨닫고 찾기까지의 과정이 문제를 푸는 것 같아서 재밌었다.

여담이지만 저장안됨을 찾고 싶을 때는 save를 바로 치자. 단어가 먼저 안 떠올라서 keep, not initialize를 검색했는데 잘 안 나오더라

profile
대충살자

0개의 댓글