개발 생활을 한 지는 8년정도 되었지만 리눅스를 활발하게 쓰진 않았었다. 고등학생 때 CentOS로 서버 구축 이런 것도 하긴 했고 리눅스 마스터 2급인가.. 그런 것도 공부하긴 했지만 개발 환경으로써의 리눅스는 별로 익숙하지 않았던 것이 사실이다. 하지만 현 직장에 들어오면서 리눅스를 정말 많이 쓰게 되면서 리눅스에서 각종 커맨드 도구에 대해서도 관심이 많아졌다.
이번 포스트는 dotfiles에 관한 내용이다. 컴퓨터를 설치하고 나면 쉘 설정파일 (.bashrc, .zshrc)라든지 fzf, mise 같은 CLT (Command Line Tool)을 설치해야 하는데 이걸 한 컴퓨터에만 하면 모르겠지만 여러 컴퓨터에 같은 설정 파일을 두고 동기화하고 싶은 마음이 들 때가 생긴다. 그럴 때 사용하는 것이 dotfiles이다. 거창한 건 아니고 그냥 설정파일들을 백업해두고 사용하는 개념이다. dotfiles라는 이름이 붙은 이유는 보통 Unix-like 운영체제에서 설정파일의 이름이 ‘.’으로 시작하는 hidden files로 나타내기 때문이다.
나는 dotfiles에 setup script (install.py, setup.sh)를 두고 .zshrc, .gitconfig를 백업해서 사용 중이다. 나도 이런 개념에 대해 알게된지 6개월정도 밖에 되지 않아 복잡하진 않다. dotfiles를 git repo로 만들어 두고 symbolic linking 활용해 dotfiles 디렉토리 안에 있는 파일을 위치시키고 있다.
예를 들면, ln -s ~/dotfiles/dot_zshrc ~/.zshrc을 실행하면 git repo에서 파일 변화에 대한 추적은 할 수 있으면서 기존에 사용하던 패턴을 그대로 유지할 수 있다. 매우 편리하다!
예전에 chezmoi 같은 dotfiles를 좀 더 편하게 관리해주는 도구도 사용해보려고 했다. 결국엔 포기했는데 이게 그렇게 중요한 것도 아닌데 괜한 러닝 커브를 만드는 것이 내 가치관과 맞지 않았기 때문이다. 내가 이해한걸로는 chezmoi도 결국엔 git의 개념을 사용하는 것으로 안다. 그래서 난 그냥 내가 편한대로 커스텀해서 나만의 dotfiles을 만들었다. 현재는 private repo로 관리하고 있어서 링크를 공유하지는 못하지만, 혹시 나와 같은 고민을 가졌던 분들에겐 dotfiles라는 개념이 있다는 것도 알려드리면서 한번 찾아서 해보길 추천한다.
최근에 나만의 백업 시스템을 만들어보면서 느낀 점이 있다. 예전에는 인터넷에 사람들이 다 올려놨으니까 그걸 매번 셋업할 때마다 확인하면 되는 거 아닌가 했다. 하지만 생각보다 인터넷에 있는 자료들이 나중에 검색엔진을 통해 다시 찾으려면 상당히 어렵다는 것을 알게 되고, 인터넷에 있는 자료는 어느 순간 사라질 수도 있다는 걸 체감하면서 나만의 아카이브를 구축하는 것이 중요하다는 걸 느꼈다. 내가 약 2년 전에 언급한 개인화에서 말한 내용과 일맥상통하는 측면도 있어 보인다. 차근차근 나만의 아카이브를 쌓아가는 작업을 해볼 생각이다. 은근히 재미있기도 하고 말이다.